hadoop2.7.2学习笔记18-HDFS Federation

HDFS分为两个主要的层:

Namespace,由目录、文件和blocks组成。它支持所有和NameSpace相关的文件系统操作,如创建、删除、修改和打印清单。

Block Storage Service,它由两部分组成。

1、Block Management(运行于NameNode),它处理来自DataNode的注册和周期性心跳,处理block的报告并保存block的位置,支持block相关的操作(创建、删除、修改和获取block位置信息),管理replica。

2、Storage,由DataNode提供,用来在本地文件系统存储blocks,并提供blocks的读写功能。

hadoop2.7.2学习笔记18-HDFS Federation

1、多个NameNodes/Namespaces

在此模式下,NameNodes是相互独立的,DataNodes被用作所有NameNodes公共的blocks存储空间。每个DataNode会在所有的NameNode中进行注册。

用户通过viewFs来创建NameSpace视图,viewFs类似于Unix/Linux中的客户端挂载。

hadoop2.7.2学习笔记18-HDFS Federation

Block Pool:

block池是属于单个namenode的一组blocks。DataNodes存储集群中所有block池的blocks。每个blocks池是独立管理的。

一个NameSpace和它的block池一起被称作NameSpace容器。当一个NameNode/Namespace被删除时,与其相关的DataNode中的block池也会被删除。在升级时,每个NameSpace作为一个独立单元进行升级。

ClusterID:

用来识别集群中的所有节点。当一个NameNode被格式化,这个id会被指定或自动生成。

2、配置

Federation增加了一个NameServiceID的概念。NameSpace与和它相关的secondary/backup/checkpoint nodes都属于同一个NameServiceID。这些进程的配置项都需要加NameServiceID作为后缀。

完成配置后需要格式化namenode,使用命令

[hdfs]$ $HADOOP_PREFIX/bin/hdfs namenode -format [-clusterId <cluster_id>]
用上述命令将其他的namenode全部格式化。

3、管理集群

使用下面命令启动集群

[hdfs]$ $HADOOP_PREFIX/sbin/start-dfs.sh
用下面命令停止集群

[hdfs]$ $HADOOP_PREFIX/sbin/stop-dfs.sh

balancer

Federation模式下的平衡器被改变了,需要用下面的命令来启动它

[hdfs]$ $HADOOP_PREFIX/sbin/hadoop-daemon.sh start balancer [-policy <policy>]
其中policy可以是datanode或blockpool。它指定平衡器进行负载均衡的级别。