赞
踩
Windows,Hadoop3.x版本,3台虚拟机(centos)
3台虚拟机配置如下
主机名 | IP地址 |
---|---|
serverx | 192.168.31.169 |
serverx1 | 192.168.31.170 |
serverx2 | 192.168.31.171 |
在真实的企业环境当中,服务器集群会使用到多台机器共同配合,来构建一
个完整的 分布式文件系统。而这样的分布式文件系统中,HDFS相关的守
护进程也会分布在不 同的机器上,例如:
守护进程布局
NameNode | DataNode | SecondaryNode | |
---|---|---|---|
serverx | √ | √ | |
servex1 | √ | √ | |
serverx2 | √ |
#关闭防火墙
[root@serverx ~]# systemctl stop firewalld
#禁止防火墙开机自启动
[root@serverx ~]# systemctl disable firewalld
#最好也把selinux也关闭掉,selinux是linux系统的一个安全机制
[root@serverx ~]# vim /etc/selinux/config
......
SELINUX=disabled
.....
[root@serverx ~]# vim /etc/hosts
.....
192.168.31.169 serverx
192.168.31.170 serverx1
192.168.31.171 serverx2
.....
#使用rsa加密技术,生成公钥私钥
[root@serverx ~]# sky-keygen -t rsa
#将生成的公钥发给需要的主机
[root@serverx ~]# ssh-copy-id serverx1
[root@serverx ~]# ssh-copy-id serverx2
#验证是否成功
[root@serverx ~]# ssh serverx1
同步时间有2种方案,第一种同步阿里云的时间,第二种就是以一台机器
为基准另外两台机器同步这一台机器的时间,,下面是以同步阿里云时间
为例
#同步阿里的时间需要下载ntpdate,而采用第二种方法时,需要下载ntp
[root@serverx ~]# yum isntall ntpdate -y
#同步时间,将日志打入黑洞中
[root@serverx ~]# ntpdate -u ntp.aliyun.com > /dev/null 2>&1
参考[https://blog.csdn.net/m0_74346394/article/details/136032739?spm=1001.2014.3001.5501](https://blog.csdn.net/m0_74346394/article/details/136032739?spm=1001.2014.3001.5501)
[root@serverx ~]# vim $HADOOP_HOME/etc/hadoop/core-site.xml #在文件configuration下追加 <configuration> <!--设置namenode节点 --> <!--hadoop1.x默认端口9000,hadoop2.x默认端口8020,hadoop3.x默认端口9820 --> <property> <name>fs.defaultFS</name> <value>hdfs://serverx:9820</value> </property> <!--hdfs的基础路径,被其他属性所依赖的一个基础路径,简而言之就是设置Hadoop集群过程中生成的文件保存的位置 --> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop-3.3.6/tmp</value> </property> </configuration>
[root@serverx ~]# vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml #追加一下内容 <configuration> <!--副本,如果某个节点宕机了我可以通过副本来进行找回,默认值为3 --> <property> <name>dfs.repliocation</name> <value>3</value> </property> <!-- secondarynamenode守护进程的http地址;主机名和端口 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>serverx1:9868</value> </property> <!--namenode守护进程的http地址:主机名和端口号,可以通过网页来监控Hadoop集群 --> <property> <name>dfs.namenode.http-address</name> <value>serverx:9870</value> </property> </configuration>
[root@serverx ~]# vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh 添加一下内容 ------ export JAVA_HOME=/usr/local/jdk1.8.0_391 #Hadoop3中需要添加以下配置,设置启动集群角色的用户是谁 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root ------ #编辑workers文件,Hadoop1.x和Hadoop2.x版本为slaves,切记一定要将localhost删除 [root@serverx ~]# vim workers ------- serverx serverx1 serverx2 ------
#格式化集群,格式化之前一定要将hadoop安装路径下的tmp文件删除不然会出现问题
[root@serverx ~]# hdfs namenode -format
#启动集群
[root@serverx ~]# start-dfs.sh
通过jps命令检查
启动之后访问192.168.31.169:9820网址
#启动HDFS相关进程,包括NameNode,SecondaryNameNode,DataNode
[root@serverx ~]# start-dfs.sh
#关闭HDFS相关进程,包括NameNode,SecondaryNameNode,DataNode
[root@serverx ~]# stop-dfs.sh
#启动一个节点的一个进程,例如启动namenode进程
[root@serverx ~]# hdfs --daemon start namenode
#关闭一个节点的一个进程,例如关闭namenode进程
[root@serverx ~]#hdfs --daemon start namenode
#启动所有机器的单个进程
[root@serverx ~]# hdfs --workers --daemon start namenode
#关闭所有机器的单个进程
[root@serverx ~]# hdfs --workers --daemon stop namenode
#在/root/opt/下创建bin目录 [root@serverx opt]# mkdir bin #在bin目录下编写一个叫jps-cluster.sh的脚本 [root@serverx bin]# vim jps-cluster.sh #在文件中加上一下内容 ----------------- #!/bin/bash HOSTS=( serverx serverx1 serverx2 ) for HOST in ${HOSTS[*]} do echo "---------- $HOST ----------" ssh -T $HOST << DELIMITER jps | grep -iv jps exit DELIMITER done ----------------- #赋予文件执行的权限 [root@serverx bin]# sudo chmod a+x jps-cluster.sh #配置环境变量,将文件软连接到/usr/bin/文件夹下,-sf强制执行,如果有则覆盖 [root@serverx bin]# ln -s /root/opt/bin/jps-cluster.sh /usr/bin/ #检验 [root@serverx ~]# jps-cluster.sh
HDFS的角色有三个:NameNode,SecondaryNameNode,DataNode,启动的时候也会有对应的日志文件生成
。如果启动脚本执行之后,发现对应的进程没有启动,那就可以去看日志文件。
以上就是用Hadoop搭建完全分布式集群的方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。