hadoop hdfs HA

hadoop hdfs部署方案有两种,一种namenode+secondary namenode,一种2.*后的HA, HA一般采用cloudera开发的QJM方案,已经合并到Apache分支。

第一种存在单点问题,并且如果namenode数据跌了,那secondary namenode的数据来恢复会丢失最近一部分修改,secondary做checkpointing, 应该就只能恢复到上次checkpoint的数据。

hadoop hdfs HA_第1张图片
hdfs_ha.png

HA方案namenode本身应该没做什么过多修改,利用其它组件协同工作。注意关键点两个,一个是存储改成共享存储, 一个是保证只有一个namenode提供服务。

  • QJM 负责存储高可用,对应图中Shard NN, QJM大多数结点可用时QJM服务就可用。
  • standby 同时做checkpoint (替代secondary namenode)
  • ZKFailoverController(ZKFC) 负责监控选主切换active结点
  • fencing
    fencing是确保只有一个namenode active提供服务写QJM的,注意
    standy NN的ZKFC在ZK发现active结点掉了的时候它要切换standby为active前先要确保原来的active真的停止服务了,目前有两种配置,最简单的就是ssh到原来的NN机器kill掉它确保没运行了再切standby为active。
    • sshfence - SSH to the Active NameNode and kill the process
    • shell - run an arbitrary shell command to fence the Active NameNode
hadoop hdfs HA_第2张图片
一个用CM部署HA方案看到的各个instance

正常应该kill掉active后可以看到standby切换为active继续正常运作。

reference

https://www.cloudera.com/documentation/enterprise/5-8-x/topics/cdh_hag_hdfs_ha_intro.html#topic_2_1

https://www.snia.org/sites/default/orig/SDC2011/presentations/monday/DhrubaBorthakur_Design_Evolution_Apache_Hadoop.pdf

https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/

https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

你可能感兴趣的:(hadoop hdfs HA)