hadoop热删除datanode(命令行方式版本)

977 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

image.png

hadoop热删除datanode一共分为6步

    1. 编写退役配置文件
    1. 应用配置
    1. 迁移数据到其它datanode
    1. 停止datanode服务并关机节点
    1. 数据均衡
    1. 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…