1. Hadoop的HA机制
  ASP站长网前言:正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制
 
1.1. HA的运作机制
(1)hadoop-HA集群运作机制介绍
 
  所谓HA,即高可用(7*24小时不中断服务)
 
  实现高可用最关键的是消除单点故障
 
  hadoop-ha严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA
 
(2)HDFS的HA机制详解
 
  通过双namenode消除单点故障
 
  双namenode协调工作的要点:
 
     A、元数据管理方式需要改变:
 
        内存中各自保存一份元数据
 
        Edits日志只能有一份,只有Active状态的namenode节点可以做写操作
 
        两个namenode都可以读取edits
 
        共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)
 
      B、需要一个状态管理功能模块
 
        实现了一个zkfailover,常驻在每一个namenode所在的节点
 
        每一个zkfailover负责监控自己所在namenode节点,利用zk进行状态标识
 
        当需要进行状态切换时,由zkfailover来负责切换
 
        切换时需要防止brain split现象的发生
 
1.2. HDFS-HA图解
 
 
 
 
 
2. 主机规划
主机名称
 
外网IP
 
内网IP
 
操作系统
 
备注
 
安装软件
 
运行进程
 
mini01
 
10.0.0.111
 
172.16.1.111
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop
 
NameNode、DFSZKFailoverController(zkfc)
 
mini02
 
10.0.0.112
 
172.16.1.112
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop
 
NameNode、DFSZKFailoverController(zkfc)
 
mini03
 
10.0.0.113
 
172.16.1.113
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop、zookeeper
 
ResourceManager
 
mini04
 
10.0.0.114
 
172.16.1.114
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop、zookeeper
 
ResourceManager
 
mini05
 
10.0.0.115
 
172.16.1.115
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop、zookeeper
 
DataNode、NodeManager、JournalNode、QuorumPeerMain
 
mini06
 
10.0.0.116
 
172.16.1.116
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop、zookeeper
 
DataNode、NodeManager、JournalNode、QuorumPeerMain
 
mini07
 
10.0.0.117
 
172.16.1.117
 
CentOS 7.4
 
ssh port:22
 
jdk、hadoop、zookeeper
 
DataNode、NodeManager、JournalNode、QuorumPeerMain
 
注意:针对HA模式,就不需要SecondaryNameNode了,因为STANDBY状态的namenode会负责做checkpoint
 
Linux添加hosts信息,保证每台都可以相互ping通
 
[root@mini01 ~]# cat /etc/hosts
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
 
10.0.0.111    mini01
10.0.0.112    mini02
10.0.0.113    mini03
10.0.0.114    mini04
10.0.0.115    mini05
10.0.0.116    mini06
10.0.0.117    mini07
 
Windows的hosts文件修改
 
 # 文件位置C:\Windows\System32\drivers\etc  在hosts中追加如下内容
…………………………………………
10.0.0.111    mini01
10.0.0.112    mini02
10.0.0.113    mini03
10.0.0.114    mini04
10.0.0.115    mini05
10.0.0.116    mini06
10.0.0.117    mini07
 
3. 添加用户账号
 
 # 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录并指定用户密码
useradd -d /app yun && echo '123456' | /usr/bin/passwd --stdin yun
# sudo提权
echo "yun  ALL=(ALL)      NOPASSWD: ALL" >>  /etc/sudoers
# 让其它普通用户可以进入该目录查看信息
chmod 755 /app/
 
4. 实现yun用户免秘钥登录
 
要求:根据规划实现 mini01 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini02 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini03 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini04 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini05 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini06 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
              实现 mini07 到 mini01、mini02、mini03、mini04、mini05、mini06、mini07 免秘钥登录
 
# 可以使用ip也可以是hostname  但是由于我们计划使用的是 hostname 方式交互,所以使用hostname
# 同时hostname方式分发,可以通过hostname远程登录,也可以IP远程登录
 
具体过程就不多说了,请参见  https://www.linuxidc.com/Linux/2018-08/153353.htm
 
5. Jdk【java8】
 
具体过程就不多说了,请参见 https://www.linuxidc.com/Linux/2018-08/153353.htm
 
6. Zookeeper部署
 
根据规划zookeeper部署在mini03、mini04、mini05、mini06、mini07上
 
6.1. 配置信息
 
[yun@mini03 conf]$ pwd
/app/zookeeper/conf
[yun@mini03 conf]$ vim zoo.cfg
#单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。
maxClientCnxns=1500
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir=/tmp/zookeeper
dataDir=/app/bigdata/zookeeper/data
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
 
# leader和follow通信端口和投票选举端口
server.3=mini03:2888:3888
server.4=mini04:2888:3888
server.5=mini05:2888:3888
server.6=mini06:2888:3888
server.7=mini07:2888:3888
 
6.2. 添加myid文件
 
[yun@mini03 data]$ pwd
/app/bigdata/zookeeper/data
[yun@mini03 data]$ vim myid  # 其中mini03的myid 为3;mini04的myid 为4;mini05的myid 为5;mini06的myid 为6;mini07的myid 为7
3
 
6.3. 启动zk服务
 
# 依次在启动mini03、mini04、mini05、mini06、mini07 zk服务
[yun@mini03 ~]$ cd zookeeper/bin/
[yun@mini03 bin]$ pwd
/app/zookeeper/bin
[yun@mini03 bin]$ ll
total 56
-rwxr-xr-x 1 yun yun  238 Oct  1  2012 README.txt
-rwxr-xr-x 1 yun yun  1909 Oct  1  2012 zkCleanup.sh
-rwxr-xr-x 1 yun yun  1049 Oct  1  2012 zkCli.cmd
-rwxr-xr-x 1 yun yun  1512 Oct  1  2012 zkCli.sh
-rwxr-xr-x 1 yun yun  1333 Oct  1  2012 zkEnv.cmd
-rwxr-xr-x 1 yun yun  2599 Oct  1  2012 zkEnv.sh
-rwxr-xr-x 1 yun yun  1084 Oct  1  2012 zkServer.cmd
-rwxr-xr-x 1 yun yun  5467 Oct  1  2012 zkServer.sh
-rw-rw-r-- 1 yun yun 17522 Jun 28 21:01 zookeeper.out
[yun@mini03 bin]$ ./zkServer.sh start
JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
 
6.4. 查询运行状态
 
# 其中mini03、mini04、mini06、mini07状态如下
[yun@mini03 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: follower
 
# 其中mini05 状态如下
[yun@mini05 bin]$ ./zkServer.sh status
JMX enabled by default
Using config: /app/zookeeper/bin/../conf/zoo.cfg
Mode: leader
 
PS:4个follower 1个leader
 
7. Hadoop部署与配置修改
 
  注意:每台机器的Hadoop以及配置相同

dawei

【声明】:九江站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。