CDH集群中HDFS单点故障解决方案:HA模式(High Availability)
CDH集群开发HDFS的High Avaliability模式
Step1 什么是单点故障?
单点故障(英语:single point of failure,缩写SPOF)是指系统中一旦失效,就会让整个系统无法运作的部件,换句话说,单点故障即会整体故障。
图中的路由器就是一个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.
NameNode服务负责HDFS文件系统Namespace
的操作,包括打开、关闭、重命名文件和目录。以及是HDFS元数据(Metadata
)的管理中心和存储库,存储的是文件系统的所有更改记录。NameNode不负责元数据的存储,只记录元数据的存储位置。这大概是架构师选择单点NameNode的原因吧。
Step3 开启HDFS的高可用(High Avaliability)模式
- CDH集群下开启HDFS的高可用模式,开启后会关闭
SecondaryNameNode
- 选择zk节点的服务器承载
JournalNode
(zookeeper至少3个节点) - JournalNode的目录建议配置在/dfs目录下:
/dfs/nn
*注意:此时需要删除NameNode所在节点的/dfs/nn
的文件,执行:rm -rf /dfs/nn
;否则会出现异常 - 启动过程中出现异常
创建/tmp目录失败解决方案:手动在hdfs文件系统创建/tmp目录
。切换到hdfs用户:su hdfs
,执行创建操作:hadoop dfs -mkdir /tmp
注:该异常不影响HA模型的部署,完成HA模式的启动步骤后,再手动创建/tmp目录即可 - 成功启用HA模式,需要更新
Hive Metastore NameNode
如果缺少该步骤,进入hive控制台会提示FAILED: SemanticException Unable to determine if hdfs://hadoop7:8020/test/test_table is encrypted:
我这里已经更新过了,所以不能再点击: