HDFS高可用与高扩展性机制分析|青训营笔记
这是我参与「第四届青训营 」笔记创作活动的第3天
- HDFS的高可用
HDFS的HA,指的是在一个集群中存在多个NameNode,分别运行在独立的物理节点上。在任何时间 点,只有一个NameNode是处于Active状态,其它的是处于Standby状态。 Active NameNode(简写为 Active NN)负责所有的客户端的操作,而Standby NameNode(简写为Standby NN)用来同步Active NameNode的状态信息,以提供快速的故障恢复能力。
需要注意一点,为了保证Active NN与Standby NN节点状态同步,即元数据保持一致。
HA集群规划
| node | namenode | datanode | journalnode | zkfc | zookeeper | | ---- | -------- | -------- | ----------- | ---- | --------- | | |bigdata01 | yes | | yes | yes | yes | | bigdata02 | yes | yes | yes | yes | yes | | bigdata03 | | yes | yes | yes | yes|
解释:针对HDFS的HA集群,在这里我们只需要启动HDFS相关的进程即可,YARN相关的进程可以不启动,它们两个的进程本来就是相互独立的。
在HDFS的HA集群中,就不需要启动SecondaryNameNode进程了
- namenode: hdfs的主节点
- datanode: hdfs的从节点
- journalnode: JournalNode进程,用来同步Edits信息的
- zkfc(DFSZKFailoverController): 监视namenode的状态,负责切换namenode节点的状态
- zookeeper(QuorumPeerMain): 保存ha集群的节点状态信息
- HDFS的高扩展 HDFS Federation可以解决单一命名空间存在的问题,使用多个NameNode,每个NameNode负责一个命令空间
这种设计可提供以下特性:
1:HDFS集群扩展性。多个NameNode分管一部分目录,使得一个集群可以扩展到更多节点,不再因内存的限制制约文件存储数目。
2:性能更高效。多个NameNode管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。
3:良好的隔离性。用户可根据需要将不同业务数据交由不同NameNode管理,这样不同业务之间影响很小。
(待补充)