1.什么是高可用的完全分布式HDFS?
因为在完全分布式的HDFS集群中,如果NameNode挂掉了,整个集群就会停止工作,所以在高可用的完全分布式集群中增加了一个备用的NameNode节点。架构如图:
2.各个角色的作用
- DataNode:存储block块,向Active NameNode汇报并发送心跳
- Active NameNode:正在工作的NameNode,作用有管理元数据,管理DataNode等。
- Standby NameNode:备用的NameNode。作用是监控journalnode,将journalnode中的edits文件和fsimage文件拉过来进行合并来产生新的元数据。
- journalnode集群:用来存放edits文件。有两个机制,一是半数以上,就是必须要保证集群内半数以上的节点成功存储edits文件。二是最终一致性,就是只要集群内半数以上的节点成功完成了存储,就可以继续对HDFS集群操作,不必等到所有节点都存储完成。
- ZKFC:作用是监控NameNode的状态,并向zookeeper做汇报。当Active NameNode挂掉后,它会接收zookeeper的选举结果,查看Active NameNode是否真的挂掉了,如果没有就把Active NameNode降为Standby NameNode。并根据选举结果,将某一个Standby NameNode提升为Active NameNode。
- zookeeper集群:作用是接收ZKFC汇报的NameNode的信息,对NameNode的状态做出改变