在极端情况下,HDFS上的文件特别多,内存不够用,之前的HA本质上还是一个NameNode,为了应对这种需求就需要多个NameNode。
此时不同的NameNode持有的数据都不一样,都在同时对外提供服务。为了保持服务的一致性,可以分目录来进行区分。比如分为/ns1和/ns2,就像两个分区那样。是一个逻辑路径,映射到实际的hdfs路径下面。
此时,两个NameNode就变成了Federation。Federation下面的每一个NameNode可以各自实现HA。
在实现HA时,一对NN有一个逻辑名称:nameservice,可以自己设置。客户端访问时可以指定逻辑名称。
在Federation中,两对NN分别有自己的逻辑名称,比如分别为ns1和ns2。可以通过ViewFs://ns1即访问ns1下面的目录。
Federation中的DataNode共用,Federation中的NameNode的clusterId必须一样。DataNode上的BlockPool的id则分为两个,分属两个NameNode。
最后上张图。