为了解决hadoop集群上所谓的“单点”和单NameNode起作用问题,一群NB的程序员引入了HA和Federation机制。
一、HA机制
1、概念
由于原先的集群中只有一个NameNode,所以一旦这个NameNode出问题或者要升级,整个集群就得停止一段时间。于此,就有了HA机制。
说白了所谓的HA机制就是给NameNode弄了一个热备:给一个HA集群中配置了俩NameNode,平时只有一个活动,另一个装死(类似Slave),一旦正主不行了,备胎瞬间逆袭接管所有任务。当然,这都是开玩笑的说法。但要明白的一点是,备胎也不能自动逆袭,需要手动操作。
2、运行原理
DataNode同时向两个NameNode和Standby NameNode发送心跳信息,备用节点实时监听NameNode的信息,这边一更改,备用节点就把修改内容同步到自己的名字空间(这点与传统的Secondary NameNode提供周期性检查点和清理任务,减少NameNode重启时间不同)。
3、实现方式
(1)NFS:
active NameNode把最近的文件操作写到本地的edits中,然后传输到NFS或JN中。standby NameNode定期检查,从NFS或JN中读取,把edits和fsimage文件合并成一个新的fsimage,而后通知active NameNode获取这个新的fsimage。AN获得新fsimage后替换掉旧的fsiamge。
(2)QJM:(有容错机制)
active NameNode和standby NameNode之间通过一组JournalNode(奇数个)共享数据。活动节点把最近的edits文件写到2n+1个JN上,只要写成n+1个就认为成功,而后standby NameNode从JN上读取edits。
二、Federation机制
1、原理:
直接有多个NameNode,相互独立,彼此之间是联盟关系。每个DataNode向所有NameNode注册,发送心跳信息和块信息报告。
三、HA与Fedration机制的对比
HA解决了单点问题,Federation解决了整个HDFS集群中只有一个名字空间,并且只有单独的一个NameNode管理所有DataNode的问题。
PS:最近笔试面试一场接一场,先大概讲到这里,详细内容之后会补充上来。