HA
hadoopHA也就是hadoop2.x实现了高可用,通过主备namenode解决了hadoop1.x中存在的单点故障问题。
HA机制架构图:
架构图可以从下往上看:
DataNode在发送block的位置信息会同时向主备namenode发送。但是在读写文件的时候还是会通过主namenode(active),也就是元数据信息还是保存在active namenode中,那么为了保证standby namenode也有元数据信息,就用到了JN(JournalNode)。通过JN使得主备namenode中的数据共享,保持数据同步,这样一点切换到备用的NN时就可以保持数据准确,并且JN必须确保同一时刻只有一个NameNode可以向自己写数据。
NameNode怎么从standby状态切换到active呢?这时候zookeeper集群就可以做到了,ZKFC会实时监控NameNode的状态并汇报给zookeeper,如果active namenode发生故障,那么zookeeper就会协调standby namenode成为active状态,从而保持系统的高可靠性。
Federation联邦
通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。
能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。