CDH集群中HDFS单点故障解决方案:HA模式(High Availability)

Step1 什么是单点故障?

单点故障(英语:single point of failure,缩写SPOF)是指系统中一旦失效,就会让整个系统无法运作的部件,换句话说,单点故障即会整体故障。

CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
图中的路由器就是一个SPOF,若该路由器失效,这些电脑之间的通信就无法运作

Step2 HDFS为什么会出现单点故障?它是怎么解决的?

我们先来看看HDFS的架构,可以看到只有一个NameNode节点,这就意味着NameNode节点一旦失效,就会让整个系统无法运作。在单点故障和精简架构两面不可兼得的情况下,他们选择了精简架构。

原话是这么说的:
The existence of a single NameNode in a cluster greatly simplifies the architecture of the system. The NameNode is the arbitrator and repository for all HDFS metadata. The system is designed in such a way that user data never flows through the NameNode.

CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
NameNode服务负责HDFS文件系统Namespace的操作,包括打开、关闭、重命名文件和目录。以及是HDFS元数据(Metadata)的管理中心和存储库,存储的是文件系统的所有更改记录。NameNode不负责元数据的存储,只记录元数据的存储位置。这大概是架构师选择单点NameNode的原因吧。

Step3 开启HDFS的高可用(High Avaliability)模式
  1. CDH集群下开启HDFS的高可用模式,开启后会关闭SecondaryNameNode
    CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
  2. 选择zk节点的服务器承载JournalNode(zookeeper至少3个节点)
    CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
  3. JournalNode的目录建议配置在/dfs目录下:/dfs/nn
    *注意:此时需要删除NameNode所在节点的/dfs/nn的文件,执行:rm -rf /dfs/nn;否则会出现异常
    CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
  4. 启动过程中出现异常
    CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
    创建/tmp目录失败解决方案:手动在hdfs文件系统创建/tmp目录
    。切换到hdfs用户:
    su hdfs,执行创建操作:hadoop dfs -mkdir /tmp
    注:该异常不影响HA模型的部署,完成HA模式的启动步骤后,再手动创建/tmp目录即可
  5. 成功启用HA模式,需要更新Hive Metastore NameNode
    如果缺少该步骤,进入hive控制台会提示FAILED: SemanticException Unable to determine if hdfs://hadoop7:8020/test/test_table is encrypted:
    我这里已经更新过了,所以不能再点击:
    CDH集群中HDFS单点故障解决方案:HA模式(High Availability)