Cloudera 配置NameNode HA

本文通过实际操作详细描述如何配置HDFS NameNode的HA(注意:只是HDFS NameNode HA,不包括其他组件如Hive Metastore等)
首先得声明配置NameNode HA的两点前提条件:

  1. 至少是3个或3个以上奇数个JournalNode,否则将无法继续配置NameNode HA.
  2. 配置NameNode需要有Zookeeper.

上述两点十分重要,因为很有可能在配置HA的过程中因为条件不满足导致配置失败。以下两张截图是对应两种情况不满足时的错误,关于第一个错误,由于一开始集群中只有两个节点(1个NameNode和1个DataNode),这不满足提示中的JournalNode至少三个以上的奇数的要求,因此无法继续下一步;关于第二个错误,由于未配置HA情况下安装HDFS组件是不需要Zookeeper参与的,因此之前Hadoop集群中只有一个HDFS组件,然后NameNode HA的情况下是需要Zookeeper参与工作的,因此报下面错误。
这里写图片描述
这里写图片描述

假设以上问题我们已经解决,即有至少3个JournalNode及有Zookeeper组件的情况下,如何一步步配置NameNode HA?
1 从CDH Manager页面点击进入HDFS页面,点开右上角”操作”->”启用Hign Availability”
这里写图片描述
这里写图片描述

2 进入”下一步”,填写Nameservice名称,默认值为”nameservice1”
(注:nameservice名称是任意的,但是HA配置中不可缺少的,因为在没有HA的情况下访问Hadoop可以通过唯一的NameNode,但如果配置HA的话可以使用Nameservice作为HDFS绝对路径的一部分用于HDFS访问)
这里写图片描述

3 进入”下一步”,分配角色,选择备份NameNode节点,以及选择至少3个节点作为JournalNode
(注:JournalNode的作用是共享存储,它是主备NameNode节点都可读写的共享目录,系统是否可用也受限于共享目录是否可用,因此Cloudera配置HA时定义JournalNode至少3台或以上,这是为了消除所有的单点故障)
这里写图片描述

4 审核更改,配置备份NameNode节点的NameNode数据目录以及JournalNode编辑目录(备份NameNode的数据目录默认与主NameNode的数据目录一致,但缺少情况下JournalNode编辑目录为空,需要自己指定)
(注:以下截图中的几个附加选项,这表明如果配置了NameNode HA,Secondary NameNode将被移除,如果HA和Secondary NameNode同时存在将会报错)
这里写图片描述

5 开始启用High Availability,包括一系列的操作,涉及JournalNode、Zookeeper组件
这里写图片描述

6 完成,查看HDFS页面
这里写图片描述
这里写图片描述

至此,Cloudera Hadoop的NameNode HA已经配置完毕!