动态上下线集群详解

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

 

以上是关于动态上下线集群详解的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper——服务器动态上下线客户端动态监听

Zookeeper——服务器动态上下线客户端动态监听

Zookeeper——服务器动态上下线客户端动态监听

Hadoop基础(三十六):监听服务器节点动态上下线案例

hadoop集群 动态添加或删除节点

ZooKeeper之服务器动态上下线案例