0%

CDH 集群中 DN 热换盘处理

在集群使用的过程中会遇到数据节点的磁盘故障,在不停数据节点的情况下,如何为数据节点进行热插拔换盘操作


前言

HDFS 随着使用时间会出现数据借点磁盘故障现象,网上查阅到的大部分都是停止数据节点,换盘后重启。我司处理的方法是热插拔处理。

实操

具体参阅 Fayson 的如何在CDH集群中为数据节点热插拔硬盘

Fayson 自己也说操作步骤更类似于加盘操作,磁盘坏掉如果磁盘的盘符未变更则只需要将磁盘格式化挂载在原来的目录下。

变通方式是先将其取消坏盘挂载,更换新盘后格式化再挂载回来,DN 执行刷新数据目录操作即可。

这样会出现节点内磁盘不均衡的现象,需要借助节点内平衡 DiskBalancer,更多参考 HDFS-1312

扩展

当然,针对 Apache 版的 Hadoop 集群也有相应操作。

默认情况下,只要有一个坏盘出现,DataNode进程会shutdown,这时由 dfs.datanode.failed.volumes.tolerated 参数来控制,默认该值为0。

生产环境中需要根据当前结点的磁盘的数量来适当的调高该值的大小,使得DataNode可以容忍更多坏盘的存在(因为当集群非常大时,坏盘出现的频率还是比较高的)

换盘之前需要修改hdfs-site.xml中dfs.datanode.data.dir的配置,把坏盘对应的路径去掉

去掉坏掉的盘,而后执行下方命令,让DataNode在线更新配置

1
2
hdfs dfsadmin –reconfig datanode dnxx:50020 start
hdfs dfsadmin –reconfig datanode dnxx:50020 status

接着对磁盘进行处理,对坏盘取消挂载,同时还要在/etc/fstab下面将挂载信息进行注释

1
2
3
umount /dev/nvme1n1

vim /etc/fstab

等待机房人员将盘替换

替换完后,查看没有挂载的硬盘是否检测在系统中

1
lsblk

如果看到磁盘已经在机器中检测到,即可开始挂载

使用下面命令格式化新硬盘

1
mkfs -t ext4 /dev/nvme1n1  #  nvme1n1 都是存在在/dev 下面的,可以使用 fdisk -l 查看

挂载命令把新盘挂在要加入的DataNode目录

1
mount /dev/nvme1n1 /data2

挂载完,要在/etc/fstab下面恢复挂载信息,要不然重启挂载就消失了

1
vim /etc/fstab

记得要在DataNode的数据目录下创建保存文件路径,再刷新一下配置。

整个过程这样不用关闭Datanode进程。但是对于低版本的可能不行,若是是低版本的,能够直接把发生问题的磁盘路径从配置的dfs.data.dir从去掉,而后启动datanode进程,而后修好后再加回来,重启datanode进程。也能够调整容错的数量,dfs.datanode.failed.volumes.tolerated,思路是同样的,只是低版本的是须要重启动datanode进程。


参考链接