Skip to content

HDFS Federation

HDFS联邦是一种多Namenode架构,解决了单点故障等问题。

1. NameNode的局限性

1.1 Namespace的限制

由于NameNode在内存中存储所有的元数据(metadata),因此单个namenode所能存储的对象(文件+块)数目受到namenode所在JVM的heap size的限制。50G的heap能够存储20亿(200million)个对象,这20亿个对象支持4000个datanode,12PB的存储(假设文件平均大小为40M)。随着数据的飞速增长,存储的需求也随之增长。单个 datanode从4T增长到36T,集群的尺寸增长到8000个datanode。存储的需求从12PB增长到大于100PB。

1.2 隔离问题

由于HDFS仅有一个namenode,无法隔离各个程序,因此HDFS上的一个实验程序就很有可能影响整个HDFS上运行的程序。

1.3 性能瓶颈

由于是单个namenode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个namenode的吞吐量。

2. Federation架构

alt text

  1. 这些namenode直接相互独立,各自分工管理自己的区域,且不需要互相协调,一个namenode挂掉了不会影响其他的namenode。
  2. datanode被用作通用的数据存储设备,每个datanode要向集群中所有的namenode注册,且周期性的向所有namenode发送心跳和报告,并执行来自所有namenode的命令。
  3. 一个block pool由属于同一个namespace的数据块组成,每个datanode可能会存储集群中所有block pool数据块。每个block pool内部自治,各自管理各自的block,不会与其他block pool交流。
  4. namenode和block pool一起被称作namespace volume,它是管理的基本单位,当一个namespace被删除后,所有datanode上与其对应的block pool也会被删除。当集群升级时,每个namespace volume作为一个基本单元进行升级。

3. HDFS Federation的优势

  1. 扩展性:通过水平切分命名空间,HDFS Federation允许集群在保持高性能的同时进行横向扩展。这使得HDFS能够支持更大规模的数据存储和处理。
  2. 可用性:在传统的HDFS架构中,单个Namenode的故障可能导致整个集群不可用。而HDFS Federation通过多个独立的Namenode分担任务,降低了单点故障的风险,提高了系统的可用性。
  3. 负载均衡:HDFS Federation中的多个Namenode可以根据负载情况动态调整分配的数据块,从而实现集群的负载均衡,提高了系统的性能。