HDFS主要有两层: node
1 Namespace 架构
(1)由目录、文件及块组成 oop
(2)它支持全部依赖于命名空间的文件系统操做如 建立、删除、修改和列出文件及目录。 性能
2 Block Storage Service spa
(1)块管理(上版本的Namenode已经实现) 翻译
1)经过处理datanode注册和定时心跳来提供datanode集群成员身份 server
2) 处理块报告和维护块位置 ip
3) 支持块相关的操做 如 建立、删除、修改和得到块位置。 hadoop
4) 管理正在复制的块的备份放置和块的复制过程,删除多余的复制块。 部署
(2)存储-经过datanodes在本地文件系统存储块及读写访问实现。
上一版本的HDFS集群架构仅容许整个集群有一个单一的namespace。一个单一的namenode管理namespace。HDFS Federation 经过添加HDFS文件系统对多个Namenodes/namespaces的支持来解决上一版本的架构限制。
为了水平扩展name server,federation使用多个独立的Namenodes/namespaces。Namenodes是联邦的,就是说,namenode们之间是独立的而且不须要互相协调。对全部namenode,datanode都被用来作普通块存储。每个datanode在这个集群全部的namenode中注册。datanode发动周期心跳、块报告,处理namenode们发来的命令。
1 Block Pool
Block Pool是指属于一个namespace的全部块的集合。Datanode们为集群中的全部block pool存储块。block pool的管理是独立的。这样,namespace能够在为新块产生块id时不考虑与其余namespace的互相协调。一个namenode的失效不会影响datanode服务集群中的其余namanode。
namespace和它的的block pool一块儿被称为Namespace volume。它是一个完备的管理单元。当一个Namenode/namespace被删除时,在datanode中关联的block pool也会被删除。在集群升级期间,每一个namespace volume做为一个单元来升级。
2 ClusterID
加入新的标识符ClusterID来标识集群的全部节点。格式化namespace时,要提供或者自动产生这个标识符。这个ID应该用于格式其余 Namenodes 到该群集。
主要优势
(1) namespace可扩展 - HDFS 集群 存储能够水平扩展而namespace不能够。大型部署或使用多个小文件部署受益于水平扩展namespace,而水平扩展namespace经过往集群中添加多个namenode实现。
(2)性能。在上个版本中文件系统的吞吐量因为单点而受限。往集群中添加更多的Namenode扩展了文件系统的读写吞吐量。
(3)隔离。单一namenode不提供在多用户环境下的隔离。一个试验应用可使namenode超载并使关键应用的运行变慢。在多namenode状况下,不一样种类的应用和用户能够被隔离在不一样的namespace。