删减DataNode(decommissioning)与增加DataNode

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/hyy_blue/article/details/92426014

删减DataNode(decommissioning)

有时你想讲Hadoop集群中的某个节点进行升级或者删除。当然你可以杀死节点从而让从集群剥离,但是非常不建议这么做,HDFS的设计非常有弹性的,让一两个节点离线不会影响操作的正常进行。NameNode会检测到节点的死亡,并开始复制那些低于预定的副本数的数据块,为了让操作更加的顺畅和安全,特别是删除大批DataNode时,应该使用Hadoop的退役的(decommissioning)功能。操作如下:
1
在Namenode上,把需要删除的Datanode节点的名称(需要完整的主机名、IP或者IP:port的格式来制定节点)加入到dfs.hosts.exclude(该配置项在hdfs-site.xml)所指定文件中。

如果在你的hdfs-site.xml配置文件中没有找到dfs.hosts.exclude,那么就手动把下面内容加入到hdfs-site.xml中,然后把需要Decommission的机器写到文件/etc/hadoop/conf/dfs.exclude中去。格式如下:

 <property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/dfs_exclude</value>
</property>

就是在value中指定的dfs_exclude文件添加需要剔除的节点。(需要完整的主机名、IP或者IP:port的格式来制定节点)
2 . 用如下命令启动Decommission:

hdfs dfsadmin -refreshNodes

如果NameNode的日志出现像“Decommission compiete for node 172.16.55.50010”这样的信息就是说明已将将节点从节点中移除,
注意:需要在HDFS启动之前让dfs.hosts.exclude指向排除文件。(如果没有在HDFS启动之前让dfs.hosts.exclude指向排除文件,需要关闭Namenode,设置dfs.hosts.exclude指向排除文件,重启NameNode)
增加DataNode
相反您也可以增加一些节点来使集群计算能力增强。操作如下:(什么添加slave、配置ssh、安装JDK等等就不在赘述)

当添加一个节点时,因为该节点是空的,所以整个集群数据不平衡,我们需要主动的启动HDFS平衡器来让集群的数据趋于平衡。
操作如下:
–在hdfs-site.xml中增加设置balance的带宽,默认只有1M:

<property>

   <name>dfs.balance.bandwidthPerSec</name>

    <value>10485760</value>

    <description>

        Specifies the maximum bandwidth thateach datanode can utilize for the balancing purpose in term of the number ofbytes per second.

    </description>

</property>
   运行命令:

[licz@server123conf]$ start-balancer.sh -threshold 5

其中的5 是代表阈值。默认是10%
因为平衡器会占用网络资源,我们建议在晚上或者集群不太忙绿的情况下做,或者设置参数bandwidthPerSec限制做均衡的带宽。(如上所示)。

借鉴https://blog.csdn.net/lichangzai/article/details/19118711

猜你喜欢

转载自blog.csdn.net/hyy_blue/article/details/92426014
今日推荐