一、高可用
1、实现方式
NameNode冗余备份
2、具体过程
多个节点作为NameNode,其中一个处于Active状态,其它处于Standby状态。目前的实现有一个条件,需要借助类似NFS这样的分布式共享存储系统,而且节点要能够访问这一系统。
在Active的namespace上的每个改变,需要同步到处于Standby状态的节点。怎么同步?Active节点会周期性的将修改做日志到一个共享目录下的edit log file中,而Standby节点持续监控该目录,一有更新,就会拿过来应用到自己的namespace中。当Active节点的NameNode挂掉之后,其它节点会确保先把NameNode节点产生的修改都应用到自己的namespace中再进行替换操作。
3、快速恢复机制
在备用NameNode节点替换的时候,该节点是需要知道cluster上所有block的位置的。在上一篇HDFS的文章中有说在启动NameNode的时候处于安全模式,会对block进行检入操作。显然如果知道所有block的位置信息,恢复时间会大大减小。所以,在配置DataNode的时候,会添加上所有的NameNode。然后DataNode在会向所有的NameNode发送心跳和block位置信息。这样一来,全部NameNode上就都有最新的块信息了。
4、fencing process
如果很久没有收到NameNode对edit log file做修改记录的操作。那NameNode是挂了还是网络问题延时了?在不能确定的情况下,显然不能直接进行备胎同步完edit log file修改之