Hadoop-2.4.1学习之配置管理HDFS联盟
2014-10-13 16:53
260 查看
Hadoop-1.x版本中的HDFS架构在整个集群中只允许一个命名空间,由一个NameNode管理整个命名空间,Hadoop-2.x版本中的HDFS联盟通过支持多个NameNode和命名空间解决了之前架构的局限性。HDFS联盟的配置管理是向后兼容的,允许现存的单节点NameNode配置在不需要任何修改的情况下工作正常。新的配置管理允许集群中的所有节点使用相同的配置而不需要根据节点的不同类型部署不同的配置文件。
伴随HDFS联盟还产生了称为NameServiceID的新的抽象概念,NameNode及其对应的secondary、backup、checkpointer节点都属于同一NameServiceID。为了支持上述一个配置文件的机制,NameNode及secondary、backup、checkpointer节点的配置参数以NameServiceID为后缀并增加到相同的配置文件中。
在hdfs-site.xml中,dfs.nameservices定义了用逗号分隔的不同的NameServiceID,DateNodes将使用这些信息确定集群中的NameNodes。NameNode需要根据dfs.nameservices配置下表中的参数:
SecondaryNameNode需要配置下表中的参数:
由于BackupNode和CheckpointerNode使用的是一样的参数名(二者使用的是相同的配置参数且NameNode只支持一种类型),所以下面的参数对于BackupNode和CheckpointerNode是通用的:
如果不使用BackupNode或者CheckpointerNode,则不需要配置与之对应的参数。下面是有两个NameNode集群的hdfs-site.xml配置文件示例:
在HDFS联盟中,使用下面的命令对NameNode进行格式化:
其中cluster_id具有唯一性,不能与其它集群所使用的cluster_id冲突,如果未使用-clusterId选项,hadoop将会自动生成唯一的ClusterID。使用下面的命令格式化额外的NameNode:
在格式化额外的NameNode时必须使用-clusterId选项,并且cluster_id必须与格式化第一个NameNode时的cluster_id一致,否则额外的NameNode将不会成为集群中的一部分。如果在第一次格式化NameNode时未使用-clusterId,那么第二次格式化时就需要查看VERSION文件,其中记录了ClusterID的值。
当向现存的HDFS集群中新增NameNode时,需要先在hdfs-site.xml中增加该NameNode的配置,并将修改后的hdfs-site.xml文件分发到集群中的所有节点上,然后启动新的NameNode、SecondaryNameNode或者BackupNode,最后针对集群中的所有DataNodes使用下面的命令刷新新增的NameNode:
删减DataNodes与Hadoop-1.x类似,首先在所有的NameNodes上将不再使用的DataNodes添加到排除文件中,然后每个NameNode退役它的Block池,当所有的NameNode完成DataNode的退役后,该DataNode被认为是在集群中不再使用的。使用下面的命令将排除文件分不到所有的NameNode上:
然后使用下面的命令刷新所有的NameNodes使用新的排除文件:
可以使用下面的URL访问整个集群,其中的主机名和端口号可以是集群中的任何NameNode:
通过该web页面,用户可以获得下面的信息:
集群中的文件数量,块数量,总的存储容量,可用存储和已用存储。
所有NameNode的列表,每个NameNode的文件数量、块数量、丢失的块数量,有效的和无效的DataNode。还有访问每个NameNodeweb页面的链接。
正在退役的DataNode的状态。
伴随HDFS联盟还产生了称为NameServiceID的新的抽象概念,NameNode及其对应的secondary、backup、checkpointer节点都属于同一NameServiceID。为了支持上述一个配置文件的机制,NameNode及secondary、backup、checkpointer节点的配置参数以NameServiceID为后缀并增加到相同的配置文件中。
在hdfs-site.xml中,dfs.nameservices定义了用逗号分隔的不同的NameServiceID,DateNodes将使用这些信息确定集群中的NameNodes。NameNode需要根据dfs.nameservices配置下表中的参数:
dfs.namenode.rpc-address | 处理所有客户端请求的RPC地址,格式为nn-host1:rpc-port |
dfs.namenode.servicerpc-address | HDFS服务的通信地址。如果配置了该参数,BackupNode、Datanodes 和其它服务会连接该地址,如果没有配置该参数,默认将使用dfs.namenode.rpc-address的值 |
dfs.namenode.http-address | NameNode的web接口监听的地址 |
dfs.namenode.https-address | NameNode的https服务器地址 |
dfs.namenode.keytab.file | Keytab文件的路径 |
dfs.namenode.name.dir | NameNode存储名称表(fsimage)的本地文件系统目录 |
dfs.namenode.edits.dir | NameNode存储事务文件(edits)的本地文件系统目录,默认使用dfs.namenode.name.dir的值 |
dfs.namenode.secondary.http-address | SecondaryNameNode的http服务器地址 |
dfs.secondary.namenode.keytab.file | Keytab文件的路径 |
dfs.namenode.checkpoint.dir | SecondaryNameNode在本地文件系统中存储用于合并的临时fsimage文件的目录 |
dfs.namenode.checkpoint.edits.dir | SecondaryNameNode在本地文件系统中存储用于合并的临时edits文件的目录,默认使用dfs.namenode.checkpoint.dir的值 |
dfs.namenode.backup.address | BackupNode服务器的地址和端口号 |
dfs.namenode.backup.http-address | BackupNode的http服务器的地址和端口号 |
dfs.secondary.namenode.keytab.file | Keytab文件的路径 |
<configuration> <property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> <property> <name>dfs.namenode.rpc-address.ns1</name> <value>nn-host1:rpc-port</value> </property> <property> <name>dfs.namenode.http-address.ns1</name> <value>nn-host1:http-port</value> </property> <property> <name>dfs.namenode.secondary.http-address.ns1</name> <value>snn-host1:http-port</value> </property> <property> <name>dfs.namenode.rpc-address.ns2</name> <value>nn-host2:rpc-port</value> </property> <property> <name>dfs.namenode.http-address.ns2</name> <value>nn-host2:http-port</value> </property> <property> <name>dfs.namenode.secondary.http-address.ns2</name> <value>snn-host2:http-port</value> </property> .... Other common configuration ... </configuration>
在HDFS联盟中,使用下面的命令对NameNode进行格式化:
hdfs namenode –format [-clusterId <cluster_id>]
其中cluster_id具有唯一性,不能与其它集群所使用的cluster_id冲突,如果未使用-clusterId选项,hadoop将会自动生成唯一的ClusterID。使用下面的命令格式化额外的NameNode:
hdfs namenode –format -clusterId <cluster_id>
在格式化额外的NameNode时必须使用-clusterId选项,并且cluster_id必须与格式化第一个NameNode时的cluster_id一致,否则额外的NameNode将不会成为集群中的一部分。如果在第一次格式化NameNode时未使用-clusterId,那么第二次格式化时就需要查看VERSION文件,其中记录了ClusterID的值。
当向现存的HDFS集群中新增NameNode时,需要先在hdfs-site.xml中增加该NameNode的配置,并将修改后的hdfs-site.xml文件分发到集群中的所有节点上,然后启动新的NameNode、SecondaryNameNode或者BackupNode,最后针对集群中的所有DataNodes使用下面的命令刷新新增的NameNode:
hdfs dfadmin -refreshNameNode <datanode_host_name>:<datanode_rpc_port>
删减DataNodes与Hadoop-1.x类似,首先在所有的NameNodes上将不再使用的DataNodes添加到排除文件中,然后每个NameNode退役它的Block池,当所有的NameNode完成DataNode的退役后,该DataNode被认为是在集群中不再使用的。使用下面的命令将排除文件分不到所有的NameNode上:
sbin/distributed-exclude.sh <exclude_file>
然后使用下面的命令刷新所有的NameNodes使用新的排除文件:
sbin/refresh-namenodes.sh
可以使用下面的URL访问整个集群,其中的主机名和端口号可以是集群中的任何NameNode:
http://<any_nn_host:port>/dfsclusterhealth.jsp
通过该web页面,用户可以获得下面的信息:
集群中的文件数量,块数量,总的存储容量,可用存储和已用存储。
所有NameNode的列表,每个NameNode的文件数量、块数量、丢失的块数量,有效的和无效的DataNode。还有访问每个NameNodeweb页面的链接。
正在退役的DataNode的状态。
相关文章推荐
- Hadoop-2.4.1学习之配置管理Hadoop
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(二)
- Hadoop 管理工具HUE配置-hdfs_clusters配置
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(三)
- Hadoop学习笔记 5 - hdfs和yarn高可用性的搭建与配置
- Hadoop-2.4.1学习之HDFS文件权限和ACL
- hadoop 2.x之HDFS HA讲解之五 HA管理命令、元数据同步和基于QJM方式存储的硬件配置说明
- Hadoop2.4.1学习笔记(二)之hdfs文件系统学习
- 【Hadoop学习】HDFS中的集中化缓存管理
- <hadoop学习历程>--笔记心得3-HDFS数据管理与容错
- hadoop2.4.1伪分布式安装,hdfs命令行操作学习笔记
- hadoop学习之HDFS(2.1):linux下eclipse中配置hadoop-mapreduce开发环境并运行WordCount.java程序
- hadoop学习之使用命令行以及javaAPI管理 hdfs中的数据
- Hadoop-2.4.1学习之HDFS快照
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(一)
- Hadoop-2.2.0学习之二HDFS联盟
- Hadoop2.X配置管理1-HDFS安装配置单机版
- Hadoop学习总结之二:HDFS读写过程解析
- hadoop伪分布模式配置学习
- 黑马程序员_学习笔记8用类加载器的方式管理资源和配置文件及类加载器的总结