HDFS Federation in Hadoop

Contents

  • 1. Objective
  • 2. 什么是 HDFS Federation?
  • 3. HDFS Architecture
  • 4. HDFS Architecture的局限性
  • 5. HDFS Federation Architecture
  • 6. HDFS Federation的优势
  • 7. Conclusion

1. Objective

这篇文章主要介绍HDFS Federation in Hadoop的基础知识和找出它产生的目的;也讲解当前的HDFS Architecture和它的局限性,说明HDFS federation是怎么解决这类局限性;也详细解释 Architecture of HDFS Federation in Hadoop,HDFS Federation的优势。

What is HDFS Federation in Apache Hadoop?

2. 什么是HDFS Federation?

Hadoop Distributed FileSystem-HDFS 是世界上最可靠的存储系统,HDFS为存储大文件设计的Hadoop 文件系统。

HDFS architecture 遵循master /slave 设计结构,master 是 NameNode 和 slaves 是DataNode。 Namenode 存储数据blocks编号、位置、复制事务等元数据, 负责维护和管理 slave nodes并分配计算任务。

HDFS Federation 增强了当前的 HDFS architecture。在当前的 HDFS architecture 的 cluster 中只有单个 namespace,单个的 NameNode 管理着这个 namespace。如果NameNode 不可用,整个cluster将停止服务。只能等这个NameNode修复,这个cluster才可以提供服务。

Federation 正是提供更多的 NameNode/Namespaces克服HDFS Architecture局限性。

3. 当前的HDFS Architecture

Hadoop HDFS 包含两层:

To main layers of HDFS

  1. Namespace– 这层管理 files, directories, blocks,也支持基本的文件创建和删除等文件系统操作命令
  2. Block Storage

            a. Block management

支持blocks的创建和删除,也负责管理cluster中的 data nodes和data nodes 之间的复制。

           b. Physical storage

把 blocks 存储在local file system 和 提供读写服务,更多细节请参考 HDFS data read and write。

对于很小规模的HDFS,HDFS工作状态很好。但是,对于大规模的企业组织,特别是巨量的数据需要处理的,必须引入 Hadoop federation 解决HDFS的局限。

4. HDFS Architecture的局限性

4.1. block storage 和 Namespace 互相绑定

Namespace 层和 block storage 层紧密成对,造成难以做 namenode替代方案,而且block storage 限制被其他服务直接访问。

4.2. Namespace 扩展性

namespace 是不可扩展的。HDFS的cluster扩展是横向增加 datanodes,但是并不能新增namespace。只能在单个namenode上纵向扩展namespace。

4.3. Performance

整个Hadoop 性能依赖于namenode 的吞吐量;file system的运行也取决于单个namenode的吞吐量。 现有的NameNode 支持  60,000 并发任务,MapReduce 将需要支持 >1,00,000 并发任务。所以,更多的namenode需要引入。

4.4. 隔离性

HDFS 没有独立的namespace, 也就意味着使用同一个cluster租户组织之间是没有隔离的。

5. HDFS Federation Architecture

在 HDFS Federation架构中,使用独立的 Namenode/namespaces 横向扩展 name service,datanodes 扩展方案不变。在cluster中,所有的namenodes 使用datanodes做公共存储块,每个datanodes都注册了所有的namenodes信息。这些 datanodes 每3秒发送 heartbeats、 block report 和执行namenodes指派的指令。

An HDFS Federation Architecture in Detail

每个namenodes (NN1, NN2…, NNn) 管理自己的 namespaces (NS1, NS2…, NSn)。 每个namespace有自己的 block pool (NS1 -> pool 1),pool 1 的Block存储在 datanode 1。

5.1. Block 缓存

HDFS federation维护着很多Block pool,隶属于某个namespace的Block pool拥有一组block。每个block 是相互独立的,这样确保namespace不需要和其他namespace协调,可以独自为新的blocks 创建 Block ID。每个 Datanodes 都会存储所有的 在block pool中的data blocks。

5.2. Namespace volume

Namespace 和相应的 block pool 称为 Namespace volume。 每个 namespace volume 独立工作,当删除 namenode 或 namespace, 那么相应的 block pool 也将被删除。

6. HDFS Federation的优势

HDFS Federation 解决了 HDFS architecture的局限,提供了:

6.1. 隔离性 – 在多用户的环境下,HDFS的单个namenode 没有 隔离能力(isolation)。HDFS federation 使用了不同类别把不同应用和用户隔离到不同的 namespaces。

6.2. Namespace 扩展性– federation 多 namenodes实现了 横向的扩展

6.3. Performance – 通过增加 namenodes 提升读写的吞吐量

7. Conclusion

先前的HDFS 架构在整个cluster中只能是一个namespace,HDFS Federation解决了它的局限性。使用多个独立的Namenode/namespaces横向扩展name 服务,分离namespace层和storage层,因此提供了可隔离、可扩展和简单的设计能力。