Apache提供了两种HDFS v2 的HA方案。HA的具体实现和使用方式本文就不赘述了,可以参考以下链接:
CDH(Cloudera的Hadoop发行版)在早期的版本中只支持HA with NFS方案。自CDH4.1起,增加对HA with QJM的支持。QJM由Cloudera设计,并已经merge到Hadoop的TRUNK(HDFS-3077)。
本文旨在对比两种HA方案,为HA选型提供帮助。我们假定读者已经对HDFSv2有一定的了解,对于HDFSv1 HA了解与否并不会影响对本文的理解,因为v2的HA方案和v1的诸多HA实现有相当的差别。
首先我们来罗列两者的共同点:
- 都是热备方案
- 都是一个active Namenode(NN)和一个standby NN
- 使用Zookeeper(ZK) quorum和ZKFC来实现自动失效恢复。
- 在失效恢复时都需要配置fencing方法来fence active NN
接着,罗列参与HA的不同角色:
HDFS with NFS
- NN
- HA NFS (共享数据变更存储)
- ZK
- ZKFailoverController process
HDFS with JQM
- NN
- JournalNode
- ZK
- ZKFailoverController process
罗列两方案与HDFSv1诸多HA方案的不同点
- 大部分的HDFS v1 HA方案都是冷备,尽管也有少数v热备方案,但配置起来是不是感觉特“爽”...
- 提供例行维护的NN切换。这是v1绝大部分方案所不具备的。
罗列两方案的不同点:
共享数据方式不同。
- HA with NFS方案是共享变更的一种方案。active NN 和 standby NN需要共享一个存储目录。active NN会把数据变更日志保存在该目录内,standby NN则监视更新,并保持数据同步。为了快速切换NN,DataNode(DN)需要知道两个NN的地址,并把块信息和心跳包发送给active和standby这两个NN。此外,为了保证active NN挂了以后不再有新数据写入,Fencing逻辑在确认active NN挂了以后会切断所有与原active NN的连接。
HA with NFS存在一些限制
1. HA能力NFS方案目前只支持一个数据变更共享目录,导致HA能力受限于该目录2. 为了防止共享目录的单点失效,对共享目录有额外的要求,比如冗余的硬盘、网络和电源等。NFS共享目录所在的设备要求是高可靠性,官方推荐NAS。
3. NFS方式部署更为复杂。除了基本配置复杂外,上述第二点也够麻烦的。
To be continued...