Hadoop HDFS-Federation概述

来源:互联网 发布:java 日志输出 编辑:程序博客网 时间:2024/05/18 02:16
概述:HDFS  单Namenode节点的设计大大的简化了HDFS的实现, HDFSFederation 提出一种基于现有架构的Namenode水平扩展解决方案。

HDFS存储架构:整体上看HDFS主要由两层架构组成,HDFS  Federation 支持为一个HDFS集群配置多个Namenodes/namespaces

 

l  NameSpace

n  由目录、文件和多个块组成

n  支持所有与名称空间相关的所有操作:创建、删除、修改、文件列表和目录

l  Block Storage 由以下两部分构成

n  Block Management[块管理服务],在NameNode中运行

u  通过接收DataNode注册信息、周期性的心跳信息看,提供DataNode集群成员信息.

u  处理块报告以及维护数据块位置

u  支持块相关操作:创建、删除、修改和获取块位置

u  管理副本位置、进行块复制、删除冗余数据块

n  Storage [存储]

u  DataNode 提供,在本地文件系统读写文件。

现有架构弊端

l  Namenode 与Block Management高度耦合,通过增加Namenode并不能增加HDFS集群的吞吐量,而受限于单个Namenode的性能瓶颈

l  多用户场景下不能做到对用户或者应用程序的隔离

l  无限扩容Datanode有可能使得Namenode过载

 

多个Namenodes/Namespaces: Federation 使用多个独立的Namenodes/namespaces,多个Namenode之间是互相独立的不需要其它节点的协调,Datanodes 被所有的Nagenode所共享,每一个Datanode被注册到集群中的所有Namenodes中,Datanode周期性向所有Namenode发送心跳信息和块报告,Datanode同时响应来自不同Namenode的命令.

l  Block Pool,一个Block Pool是一个独立名称空间中的一组块的集合,Datanodes 为集群中所有的Block Pool存储数据块,每一个块池是独立管理的,允许一个namespaces生成块id而不需要其它namespaces的协助。一个Namenode失败不影响Datanode服务其它的Namenodes.

namespaces 和自己的block pool一起被称作Namespace Volume[卷名称空间],是一个独立的管理单元,当一个namespaces被删除则与之关联的块池在Datanode中也被删除.集群升级期间每个命名空间都作为一个独立的单元在集群中升级.

l  Cluster ID ,一个Cluster ID用来标识集群中的所有节点,当一个Namenode被格式化时候可以自动生成或者提供一个集群ID值,格式化其它Namenode时提供Cluster ID值使得当前Namenode加入指定集群.

获益点

l  名称空间的可伸缩性,水平扩展Namenode,大型集群或者大量小文件的部署可以从中受益允许将多个namespaces添加的集群中。

l  性能,文件系统的吞吐量不受单个Namenode节点的限制,向集群中添加更多的Namenode可以增加系统的吞吐量

l  独立,单个Namenode在多用户环境下不提供隔离,通过使用不同的namespaces可以将不同类别的应用程序和用户隔离到不同的namespace中

原创粉丝点击