使用场景
HDFS运行时将元数据存储在NameNode内存中,记录了每个文件对象内容(名称、权限、属组等)。NameNode内存使用量和文件个数相关,NameNode的内存的限制将制约文件存储数量。过大内存同时会导致以下问题:
- 启动花费的时间太长。
- Namenode在Full GC时,对外部应用的响应会产生延迟,如果发生错误将会导致整个集群不可用。
- 对于大JVM Heap进行调试比较困难,优化NameNode内存的性价比低。
Federation中每对NameNode分管一部分目录,使得一个集群可以扩展到更多NameNode节点,总体能够支持更多的文件存储。
随着业务的发展,集群规模接近2000台,NameNode响应的RPC QPS也在逐渐提高。越来越高并发的读写,与NameNode的粗粒度元数据锁,使NameNode RPC响应延迟和平均RPC队列长度也在慢慢提高。由于是单个NameNode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个NameNode的吞吐量。
Federation中HDFS读写的时候,多对NameNode管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。
非Federation场景下,单对NameNode负载过高的应用,会影响到整个集群的服务能力。
采用Federation后,用户可根据需要将不同业务数据交由不同Namespace管理,这样不同业务之间影响很小。
非Federation场景下,一对NameNode故障会导致整个Hadoop集群不可用