动态上下线集群详解
Posted fjdsj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态上下线集群详解相关的知识,希望对你有一定的参考价值。
动态上下线集群的一些配置:
1、namenode中 hdfs-site.xml 配置
<property>
<name>dfs.hosts</name>
<value>/ddmap/hadoop-1.0.4/conf/hdfs_include</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/ddmap/hadoop-1.0.4/conf/hdfs_exclude</value>
</property>
dfs.hosts所对应的文件中列出了所有可以连接到namenode的datanode, 如果为空则所有的都可以连入, dfs.hosts.exclude所对应的文件中列出了禁止连接namenode的datanode节点。 如果一个节点在这两个文件中都存在, 则不允许连入。
动态下线:
下线datanode步骤:
1. 将要下线的机器加入到dfs.hosts.exclude 指定的文件中,(使用主机名, ip基本不靠谱), 然后刷新配置Hadoop dfsadmin -refreshNodes。
2. 通过hadoop dfsadmin -report或者web界面, 可以看到, 该datanode状态转化为Decommission In Progress。
3. 当decommission进程完成数据移动, datanode状态会转变为Decommissioned, 然后datanode会自动停止datanode进程。 然后你可以看见dead nodes下多了一个你想要下线的节点。
4. 然后删除include 和 exclude 中该节点的hosts, 重新刷新hadoop dfsadmin -refreshNodes。
5. 最后别忘了删除slaves中该节点的配置, 防止下次整个集群重启时, 该节点不能通过namenode自动启动。
注意: 当你下线一个datanode节点, 有可能该节点长时间处于Decommission In Progress 状态, 一直不能转变成Decommissioned。 请你用hadoop fsck / 检查下是否有些块少于指定的块数, 特别注意那些mapreduce的临时文件。 将这些删除, 并且从垃圾箱移除, 该节点就可以顺利下线, 这是我想到的解决办法。
动态上线:
上线一个节点的步骤:
1. 保证将要上线的机器不存在与dfs.hosts.exclude所对应的文件中, 并且存在于 dfs.hosts 所对应的文件中。
2. 在namenode上刷新配置: hadoop dfsadmin -refreshNodes。
3. 在要上线的节点重启 datanode, hadoop-daemon.sh start datanode.
4. 通过hadoop dfsadmin -report 或者web界面, 可以看到, 节点已经上线。
5. 还是老话最后别忘了修改slave
以上是关于动态上下线集群详解的主要内容,如果未能解决你的问题,请参考以下文章