小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
hadoop热删除datanode一共分为6步
-
- 编写退役配置文件
-
- 应用配置
-
- 迁移数据到其它datanode
-
- 停止datanode服务并关机节点
-
- 数据均衡
-
- hdfs文件系统检查
1. 编写退役配置文件
创建一个退役配置文件(/etc/hadoop/conf/dfs.exclude)
将需要退役的主机名写到配置文件中,一行一个主机名
echo "dn1" /etc/hadoop/conf/dfs.exclude
建议一次不要退役过多datanode,最好不要超过2个datanode,可以分批次来退役
2. 应用配置
在hdfs-site.xml配置文件中 加入退役相关配置
加入以入配置,并不需要重启hadoop相关组件
<property>
<name>dfs.hosts.exclude</name>
<value>/etc/hadoop/conf/dfs.exclude</value>
<property>
3. 迁移数据到其它datanode
在namenode节点执行强制刷新命令
运行刷新命令后,发现dn1节点标记为退役,该datanode所有块都被标记为未复制,然后会将这些块迁移到其他datanode,这个步骤的进度,可以在hdfs ui上面查看
#在namenode 执行刷新命令
hdfs dfsadmin -refreshNodes
大千兆网络,机械硬盘环境下,1T数据复制需要1个小时,以此可以估算datanode退役完成时间
4. 停止datanode服务并关机节点
数据块复制完成后,在hdfs ui界面上,该datanode已经是down状态
手动停止datanode服务, 然后删除退役配置dfs.exclude中的主机条目,结束后就可以选择关机了
5. 数据均衡
主机退役之后,节点上的数据已经迁移到其它节点,此时会产生数据倾斜,需要做一个数据均衡
#在namenode 执行均衡命令
hdfs balancer -threshold 10
6. hdfs文件系统检查
最后需要做一次hdfs文件系统检查,确定文件系统是正常的
#在任意节点执行都可
hdfs fsck /
运行检查,如果显示 状态为 HEALTHY 正常
CDH界面方式
如果是用CDH搭建的集群,可以直接在界面上进行操作,查看博主以前的文章: juejin.cn/post/688780…