在hadoop集群环境下需要将两台datanode删除,为了不影响在运行业务,需对节点进行动态删除,记录操作过程如下:
1, 从集群中移走节点,需要对移走节点的数据进行备份:
在主节点的core-site.xml配置文件中添加如下内容:
<property>
<name>dfs.hosts.exclude</name>
<value>/etc/hadoop/conf/excludes</value>
</property>
说明
dfs.hosts.exclude:指要删除的节点
/etc/hadoop/conf/excludes:指定要被删除文件所在路径及名称,该处定义为excludes
2, 在1中设置目录中touch excludes,内容为每行需要移走的节点
10.3.14.91
3,进入/usr/lib/hadoop/bin 运行命令:hadoop dfsadmin -refreshNodes
该命令可以动态刷新dfs.hosts和dfs.hosts.exclude配置,无需重启NameNode。
执行完成被删除节点datanode消失了,但是tasktracker还会存在,需要手动停掉
4,然后通过 bin/hadoop dfsadmin -report查看。
结果略
5,通过4中命令可以查看到被删除节点状态,如10.3.14.91
Decommission Status : Decommissioned
说明从91往其他节点同步数据已经完成,如果状态为Decommission Status : Decommissione in process则还在执行。
至此删除节点操作完成
总结
在拔掉节点时注意要把往hadoop放数据程序先停掉,否则程序还会往要删除节点同步数据,删除节点程序会一直执行。
数据节点间的数据同步还是相当给力的,眨眼功夫就完成了