由于Hadoop1.0集群节点中只存在一个元数据(NameNode)节点,负责元数据合并的节点为SecondaryNameNode,那么在这个场景下如果元数据节点服务宕机,就会出现集群环境不可用,需要人工操作才能够重新启动,因此Hadoop2.0在Hadoop1.0的配置环境基础之上增加了HA机制,同时通过Zookeeper做集群的健康状态监测,通过FailoverController监控两个元数据节点的服务状态,并负责元数据节点的主备切换,此时如果元数据节点服务宕机,那么Zookeeper就会自动的完成元数据节点主备切换,不需要人工干预完成。
如上图所示:
在Hadoop2.0分布式集群中,可以有多个命名空间(NameSpace),多个命名空间可以组建联盟(Federation)集群。联盟由若干个命名空间组成,一个命名空间由多个元数据节点构成,所有的命名空间都共用一个由若干个数据节点(DataNode)组成的存储集群。
在一个命名空间中,由Zookeeper集群为分布式应用程序做协调服务,通过JournaNode来负责两个元数据节点之间的数据共享。
Hadoop2.0集群的特点:
主机名 |
IP地址 |
JDK版本 |
内存 |
CPU |
角色 |
master |
192.168.134.132 |
jdk1.8 |
2GB |
2核 |
NameNode Active |
master1 |
192.168.134.133 |
jdk1.8 |
2GB |
2核 |
NameNode standby |
slave1 |
192.168.134.134 |
jdk1.8 |
1GB |
1核 |
DataNode |
slave2 |
192.168.134.135 |
jdk1.8 |
1GB |
1核 |
DataNode |
slave3 |
192.168.134.136 |
jdk1.8 |
1GB |
1核 |
DataNode |
安装jdk1.8环境,安装忽略
创建用户,用户大数据配置使用,尽量不要使用root用户
useradd work
passwd work
除去环境变量和yum安装软件相关配置使用root用户以外,所有的操作都使用work用户执行,安装fuser服务,大数据主备切换中使用
yum install psmisc
work用户创建文件目录:mkdir -p /application 将配置放到此文件目录下,可根据个人习惯而定。
虚拟机采用Linux7环境,配置hosts系统文件,用别名取代IP,配置信息如下:
192.168.134.132 master
192.168.134.133 master1
192.168.134.134 slave1
192.168.134.135 slave2
192.168.134.136 slave3
可分别配置每台服务器hosts文件,也可以scp完成
安装SSH免密登录
ssh-keygen -t rsa
输入上述命令后,下面操作只需要按回车键,不用设置任何信息
命令结束会在~/.ssh/目录生成对应的私钥和公钥等文件(id_rsa,id_rsa.pub)
公钥文件追加到authorized_keys文件,操作如下:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在work账户下,需要给authorized_keys赋予600权限,否则会因为权限导致登录失败,操作如下:
chmod 600 ~/.ssh/authorized_keys
使用work用户,分别在其他服务器上创建密钥,然后将各个节点的公钥(id_rsa.pub)文件中内容追加到master节点的authorized_keys,操作如下:
ssh work@master1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh work@slave1 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh work@slave2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh work@slave3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将最终生成的authorized_keys文件分发到每台服务器的~/.ssh/文件目录下。
scp ~/.ssh/authorized_keys work@master1:~/.ssh/
scp ~/.ssh/authorized_keys work@slave1:~/.ssh/
scp ~/.ssh/authorized_keys work@slave2:~/.ssh/
scp ~/.ssh/authorized_keys work@slave3:~/.ssh/
执行(ssh 服务名)切换,如:ssh master1
第一次需要输入密码,之后就可以正常登陆了,各个节点SSH关系分布图如下:
systemctl status firewalld查看防火墙是否关闭
systemctl stop firewalld关闭防火墙
由于Linux服务器版本相关命令不一致,可网上搜索关闭的方式
线上环境则需要慎重开闭指定的大数据端口服务,如50070,8188等
节点 |
主机名(IP) |
角色 |
master |
192.168.134.132 |
DFSZKFailoverController |
master1 |
192.168.134.133 |
DFSZKFailoverController |
slave1 |
192.168.134.134 |
QuorumPeerMain |
slave2 |
192.168.134.135 |
QuorumPeerMain |
slave3 |
192.168.134.136 |
QuorumPeerMain |
分别在slave1、slave2、slave3三台服务器上安装zookeeper服务,操作命令如下:
cd /application && tar -zxvf zookeeper-3.4.13.tar.gz
ln -s zookeeper-3.4.13 zookeeper #起个别名
进入zookeeper的conf目录下,配置zookeeper集群信息
mv zoo_sample.cfg zoo.cfg编辑zoo.cfg即可,配置信息如下所示:
dataDir和dataLogDir文件目录需要创建
在dataDir文件目录下创建myid文件,在该文件里面写入一个0-255之间的整数,每个zookeeper节点上这个文件的数字应是唯一的。
配置环境变量:略
三台服务器采用同样的方式配置,注意myid不一致即可,其他都一样
验证服务是否搭建成:分别在三台服务器上执行如下命令:
zkServer.sh start
注意:zookeeper由于采用了选举算法,集群中会有一个leader和多个follower,需要半数以上的服务才能正常运行。
配置hadoop环境注意点:
cd /application && tar -zxvf hadoop-2.9.2.tar.gz
ln -s hadoop-2.9.2 hadoop
配置环境变量,进入hadoop的etc/hadoop目录
export JAVA_HOME=/application/jdk
export JAVA_HOME=/application/jdk
slave1
slave2
slave3
添加以上DataNode节点别名,一个节点别名占用一行,多个节点需换行追加
注意:
此配置只需在master和master1两台服务器配置即可,NodeManager服务器上无需配置。master1节点上配置为rm2
分别启动zookeeper服务 zkServer.sh start
slave节点启动journalnode服务
cd /application/hadoop/sbin && ./hadoop-daemon.sh start journalnode
hdfs namenode -format
hfds zkfc -formatZK
start-dfs.sh
start-yarn.sh
hdfs namenode -bootstrapStandby
7.如果master1节点namenode和resourcemanager服务未启动,需要手动启动一下
./hadoop-daemon.sh start namenode
./yarn-daemon.sh start resourcemanager
打开浏览器输入http://master:50070/ 查看节点运行情况
打开浏览器输入http://master:8188/ 查看YARN的运行情况