利用QJM实现HDFS的HA策略部署与验证工作记录分享(4)

3.5、配置自动切换模式 

自动切换模式的实现需要下面两个组建的额支持:

(1)      Zookeeper实例

需要质数个Zookeeper实例,在本集群我一个启用了3Zookeeper实例,分别部署在Hadoop-slave02hadoop-slave03hadoop-slave04中。

(2)      ZKFailoverController(简称“ZKFC”

ZKFC 是一个 Zookeeper客户端,负责监控和管理 NameNode 的状态,每台运行 NameNode的机器上也会运行一个 ZKFC 进程。

健康状况监控:

ZKFC 周期性地与本地的NameNode 交互,执行一些健康状况监测命令。

Zookeeper session 管理:

如果本地 NameNode 是健康的,则会持有Zookeeper 上一个 znode,如果它是 Active 的,会持有 zookeeper 的仅有的一个特殊 znode,该 znode 类型为 ephemeral,一旦 namenode 挂掉后,会自动消失。

基于 zookeeper 的选举:

如果本地 NameNode 是活的,而没有其他 Namenode持有特殊的 znodeZKFC 将尝试获取这个 znode,一旦获取成功后,则认为它“赢得了选举”,进而隔离之前的Active namenode,自己转换为新的 Active namenode。其大概结构如下图:

wKiom1PLyy3gOWxrAAKQ0Uj7IRQ128.jpg

具体配置步骤:

步骤1:关闭集群修改hdfs-site.xml配置文件,增加自动切换选项:

<property>

<name>dfs.ha.automatic-failover.enabled</name>

<value>true</value>

</property>

步骤2:编辑core-site.xml文件,添加Zookeeper实例:

<property>

<name>ha.zookeeper.quorum</name>

<value>hadoop-slave02:2181,hadoop-slave03:2181,hadoop-slave04:2181</value>

</property>

步骤3:启动节点上的zookeeper实例:

分别进入hadoop-slave02hadoop-slave03hadoop-slave04节点执行:

$ZOOKEEPER_HOME/bin/zkServer.sh start

Zookeeper实例对应的进程名为:

wKiom1PLy5DSX-H5AAB-yleplXQ550.jpg

步骤4:初始化zookeeper

注意:这个步骤是针对第一次启动zookeeper实例用的,如果你的zookeeper实例不是第一次启动则不需要执行此命令。

$HADOOP_HOME/bin/hdfs zkfc -formatZK

步骤5:启动 JournalNodeNameNode DataNode

步骤6:启动ZKFC

分别进入hadoop-masterhadoop-slave1即在各个 NameNode 节点上执行:

$HADOOP_HOME/sbin/hadoop-daemon.sh startzkfc

ZKFC对应的进程名为:

wKioL1PLzKvzOi9OAACkDfchk2U559.jpg

要注意的一点是:我们最先启动的NameNodeActive NameNode。现在为止配置完毕,验证请看下面一小节。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fa97acd4894c9bc4b3c2cd2ee8cb8a14.html