HDFS Federation
在Hadoop 2.0之前,也有若干技术试图解决单点故障的问题: Secondary NameNode。 它不是HA,它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。 当NameNode失效的时候,Secondary NN并无法立刻提供服务,Secondary NN甚至无法保证数据完整性: 如果NN数据丢失的话,在上一次合并后的文件系统的改动会丢失。 Backup NameNode 。 它在内存中复制了NN的当前状态,算是Warm Standby,可也就仅限于此,并没有failover等。 它同样是阶段性的做checkpoint,也无法保证数据完整性。 手动把name.dir指向NFS。安全的Cold Standby,可以保证元数据不丢失,但集群的恢复则完全靠手动。 单NN的架构使得HDFS在集群扩展性和性能上都有潜在的问题,当集群大到一定程度后,NN进程使用的内存可能会达到上百G,常用的估算公式为1G对应1百万个块,按缺省块大小计算的话,大概是64T。同时,所有的元数据信息的读取和操作都需要与NN进行通信,譬如客户端的addBlock、getBlockLocations,还有DataNode的blockRecieved、sendHeartbeat、blockReport,在集群规模变大后,NN成为了性能的瓶颈。 HDFS