https://www.linuxidc.com/Linux/2014-04/100056.htm
https://www.cnblogs.com/meiyuanbao/p/3545929.html
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/Federation.html
第一代Hadoop HDFS:
结构上由一个namenode和众多datanode组成。
功能上划分为namespace和block storage service 两部分。
HDFS Federation(HDFS联盟)是怎么回事?
答:联盟的出现是有原因的。我们知道NameNode是核心节点,维护着整个HDFS中的元数据信息,那么其容量是有限的,受制于服务器的内存空间。当NameNode服务器的内存装不下数据后,那么HDFS集群就装不下数据了,寿命也就到头了。因此其扩展性是受限的。HDFS联盟指的是有多个HDFS集群同时工作,那么其容量理论上就不受限了,夸张点说就是无限扩展。
所谓的HDFS Federation就是有多个namenode(或者说namespace)。
每两个NameNode节点组成一个Federation,每个Federation独立管理自己的元数据。
这里有block pool的概念,每一个namespace都有一个pool,datanodes会存储集群中所有的pool,block pool之间的管理是独立的,一个namespace生成一个block id时不需要跟其它namespace协调,一个namenode的失败也不会影响到datanode对其它namenodes的服务。
一个namespace和它的blockpool作为一个管理单元,删除后,对应于datanodes中的pool也会被删除。集群升级时,这个管理单元也独立升级。
这里引入clusterID来标示集群所有节点。当一个namenode format之后,这个id生成,集群中其它namenode的format也用这个id。
多namenode的好处:
1、namespace可扩展性。原来只有hdfs存储可以水平扩展,现在namenode也可以做到了,减轻单namenode的内存和服务压力。
2、性能方面。多个namenode可以提高读写时的吞吐量。
3、隔离性。隔离不同类型的程序,一定程度上控制资源的分配。