实现hadoop NN的HA自动容灾
--------------------------
0.介绍
[描述]
active宕机,无法实现状态切换,只能手动完成。
[组件]
添加两个新组建给hdfs部署。zk quorum + zkfailovercontroller(ZKFC).
故障检测 :每个NN都维护了一个和zk的session,如果nn宕机,session过期了。
就可以得到一个排他锁,表示要成为下一个active.
zkfc监控和管理NN的状态,每台NN都运行了一个ZKFC,工作内容如下
1.Health monitoring
周期ping local NN的进程,做健康检查,NN如果进入不健康状态,监视器标记他为不健康。
2.ZooKeeper session management -
如果NN健康,zkfc持有一个zk的session。如果local NN是active,该session持有一把lock,该锁使用
的是zk支持的临时节点。如果session过期,锁节点自动删除。
3.ZooKeeper-based election
如果当前节点健康,zkfc就看到没有other NN上锁该节点,就获得上锁。如果成功,成为leader,运行
容灾,本地变成active,容灾过程类似于手动容灾:之前的保护起来,本地切换状态。
1.修改hadoop的配置模式为ha模式。
xchhadoop.sh ha
2.配置细节
[hdfs-site.xml]
3.1)在zk中初始化ha状态
hdfs zkfc -formatZK
3.2)启动集群
3.3)验证自动容灾
Yarn的RM配置HA
----------------
1.配置yarn-site.xml
3.启动yarn进程
start-yarn.sh
4.查看webui
http://s100:8088/
http://s104:8088/
5.杀死100的RM
--------------------------
0.介绍
[描述]
active宕机,无法实现状态切换,只能手动完成。
[组件]
添加两个新组建给hdfs部署。zk quorum + zkfailovercontroller(ZKFC).
故障检测 :每个NN都维护了一个和zk的session,如果nn宕机,session过期了。
通知对方NN触发容灾。
就可以得到一个排他锁,表示要成为下一个active.
zkfc监控和管理NN的状态,每台NN都运行了一个ZKFC,工作内容如下
1.Health monitoring
周期ping local NN的进程,做健康检查,NN如果进入不健康状态,监视器标记他为不健康。
2.ZooKeeper session management -
如果NN健康,zkfc持有一个zk的session。如果local NN是active,该session持有一把lock,该锁使用
的是zk支持的临时节点。如果session过期,锁节点自动删除。
3.ZooKeeper-based election
如果当前节点健康,zkfc就看到没有other NN上锁该节点,就获得上锁。如果成功,成为leader,运行
容灾,本地变成active,容灾过程类似于手动容灾:之前的保护起来,本地切换状态。
1.修改hadoop的配置模式为ha模式。
xchhadoop.sh ha
2.配置细节
[hdfs-site.xml]
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property
[core-site.xml]<property>
<name>ha.zookeeper.quorum</name>
<value>s101:2181,s102:2181,s103:2181</value>
</property>
3.命令操作3.1)在zk中初始化ha状态
hdfs zkfc -formatZK
3.2)启动集群
3.3)验证自动容灾
Yarn的RM配置HA
----------------
1.配置yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>s100</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>s104</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>s100:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>s104:8088</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>s101:2181,s102:2181,s103:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.启动yarn进程
start-yarn.sh
4.查看webui
http://s100:8088/
http://s104:8088/
5.杀死100的RM