【知识分享】如何更换节点磁盘


#1

需要更换磁盘的场景一般包括以下两种情况:
1:节点某一块磁盘硬件故障
2:节点磁盘空间不足,需要添加新盘
针对第一种情况,磁盘硬件故障。如需更换硬盘,以4.6版本为分界线分为两种情况:

最新版本(针对4.6以后版本)可以直接在界面上清除已有磁盘的配置:

节点hostname点击进去后,


点击清空,应用,即可配置服务,即将配置真正更改,应用到配置文件上。完成配置后,可以检查一下相关组件的配置,确认完成就可以重启服务,使修改生效。

参数修改完成,并重启服务,如果服务正常运行,即可开始磁盘的更换操作。

4.6以前版本请按以下步骤操作:

注意更换磁盘之后,若磁盘的名称有变化,不仅hdfs、inceptor的dir要写上新盘路径,yarn中同样要添加,具体:yarn.nodemanager.local-dirs以及yarn.nodemanager.log-dirs中添加新盘的路径
1:请先确认该盘在集群hdfs和inceptor组件中的配置
dfs.datanode.data.dir & dfs.namenode.name.dir ,ngmr.localdir&ngmr.fastdisk.dir检查磁盘是否作为集群的数据盘,和元数据盘在使用?





2:如果需要更换的节点磁盘在以上四个参数均有配置使用。请先停止该节点的datanode 角色 以及namenode 角色,inceptor_server 角色,然后在以上四个参数的配置项中移除挂载该磁盘的目录,具体根据集群实际环境而定。如果只是作为数据盘在使用(即只有参数dfs.datanode.data.dir包含节点坏盘挂载的目录),只需停止datanode 角色即可,移除dfs.datanode.data.dir参数中关于磁盘配置。假设tdh2 节点的 /mnt/disk1 坏掉:

从以上截图可以注意到如果是tdh1 节点的 /mnt/disk1 这个挂载目录的磁盘坏掉,只需要修改dfs.datanode.data.dir参数中关于磁盘配置
3:点击hdfs(或者inceptor_sql组件) 配置页面的“保存更改”,请参考下图:


4:点击hdfs(或者inceptor_sql)页面“更多操作”中的“配置服务”使其生效,请参考下图:

5:如果不需要添加新盘,可以重启相关datanode 角色 (或者namenode,inceptor server 角色),执行完第6 步即可结束,无需执行第7~11步的操作。如果需要添加新盘,请不要重启第2步停止的 角色 ,直接跳转到第6步

6:tdh2 节点上,卸载磁盘:umount /dev/sdb1 /mnt/disk1
7:tdh2 节点上,挂载新盘: mount /dev/sdb* /mnt/disk*
8:在8180界面,hdfs 组件配置参数dfs.datanode.data.dir & dfs.namenode.name.dir (或者ngmr.localdir&ngmr.fastdisk.dir)添加新磁盘的挂载目录,新加目录名称:/mnt/disk*/Hadoop/data (或者 /mnt/disk*/Hadoop/namenode_dir ;/mnt/disk*/Hadoop/inceptorsql2/;/mnt/ramdisk/ngmr/ )。
9:点击hdfs(或着inceptor_sql组件) 配置页面的保存更改

10:点击hdfs(或着inceptor_sql组件)页面“更多操作”中的“配置服务”使其生效(手动balance 节点上磁盘数据)

注意,新添加的节点磁盘,节点磁盘间数据目前不会自动balance 到新盘,需要手动mv,如果节点多个磁盘的使用率都不高,可以不用手动 balance,直接执行第11步
配置了服务之后,新加磁盘会自动生成/mnt/disk?/hadoop/data/目录。
1)手动将旧盘数据全部移动到新磁盘(针对原来数据放置在了根目录,导致根目录满了,节点新加磁盘的情况)
mv /hadoop/data/current/ /mnt/disk?/hadoop/data/
2)手动将旧盘数据部分移动到新磁盘(节点多个磁盘之间的balance)
例如移动/mnt/disk2/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized 下面的部分数据到新磁盘目录
a) 需要在新盘的目录/mnt/disk?/hadoop/data/ 手动创建相应子目录BP-462931221-172.16.1.35-1475147506415/current/finalized (注意检查目录以及需要移动文件的权限/owner)
b) Mv /mnt/disk2/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized/*
/mnt/disk?/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized/
移动结束注意检查文件的权限/owner,需要和原目录的owner/权限一致

11:重启相关datanode 角色(或者namenode 角色,inceptor server 角色)

针对第二种情况,节点磁盘空间不足,需要添加新盘,请参考以下步骤:

1:在8180 界面先stop 相应节点datanode 角色


2:在8180界面,hdfs 组件配置参数dfs.datanode.data.dir 添加新磁盘的挂载目录。/mnt/disk*/Hadoop/data

3:点击hdfs 配置页面的保存更改

4:点击页面“更多操作”中的“配置服务”使其生效(手动balance 节点上磁盘数据)

注意,新添加的节点磁盘,节点磁盘间数据目前不会自动balance 到新盘,需要手动mv,如果节点多个磁盘的使用率都不高,可以不用手动 balance,直接执行第11步
配置了服务之后,新加磁盘会自动生成/mnt/disk?/hadoop/data/目录。
1)手动将旧盘数据全部移动到新磁盘(针对原来数据放置在了根目录,导致根目录满了,节点新加磁盘的情况)
mv /hadoop/data/current/ /mnt/disk?/hadoop/data/
2)手动将旧盘数据部分移动到新磁盘(节点多个磁盘之间的balance)
例如移动/mnt/disk2/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized 下面的部分数据到新磁盘目录
c) 需要在新盘的目录/mnt/disk?/hadoop/data/ 手动创建相应子目录BP-462931221-172.16.1.35-1475147506415/current/finalized (注意检查目录以及需要移动文件的权限/owner)
d) Mv /mnt/disk2/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized/*
/mnt/disk?/hadoop/data/current/BP-462931221-172.16.1.35-1475147506415/current/finalized/
移动结束注意检查文件的权限/owner,需要和原目录的owner/权限一致

5:重启相关datanode 角色


运行中,如果磁盘挂了则么办?
#3

在4.6以后版本,在更换磁盘后,并把更换的磁盘格式化,重新挂载后,在回到清除磁盘配置界面,会看到重新挂载的磁盘,点击 默认值。就可以把进行磁盘配置。


然后点击应用,重启相应服务即可。
在重启服务过程中,需要注意的是,不会重启NameNode、resource manger,等管理角色,但会重启inceptor server。因此在生产集群上,要做好停inceptor 的准备。


#4

对于tdh4.6.5,这个换盘操作对数据或者应用会产生什么影响?如数据会不会丢失,应用会不会出故障


#5

换盘只是改变了存储,管理角色没有重启,inceptor server居然会重启


#6

单独操作一个节点的几块磁盘是不会产生数据丢失的,不要同时对多个节点进行换磁盘的操作,因为需要重启,应用应用应该要断一下的


#7

其实这个inceptor重启我特别不能理解,换磁盘需要重启inceptor server 会导致中断业务,对业务影响太大了。而且我是多个inceptor server的情况下操作换坏掉的磁盘,所有配置好资源的inceptor server 的资源配置全部被刷成默认的了。导致我需要重新配置inceptor server的资源,第二次重启。


#8

这种更换磁盘的操作受用情况我理解的是两种
1.主动更换磁盘,这种情况就要有运维人员结合业务的紧张情况规划更换磁盘的时间
2.是被动更换磁盘,这种情况由于磁盘坏了,导致数据无法向该磁盘所在的目录写数据了,而inceptor的shuffle目录也在这个磁盘上,导致有任务在shuffle的时候跑不通阻塞整个业务,在没有ha的情况为了恢复业务重启,也是可以接受的。

但是这个问题高可用方面确实需要加强,不应该因为一块盘影响整个业务。


#9

5.x更换磁盘步骤如下:
1.在集群的服务去掉更换磁盘被挂载的目录
在服务的配置中依次搜索dir或者path.data等关键字,在参数配置中去掉需要更换盘的路径
修改后保存并配置服务,从前到后依次修改服务的配置,修改完成后。从后往前停止被修改的服务,再从前往后启动被停止的服务
注:如果需要更加多块磁盘,最好是一块一块的替换,防止数据的丢失,更换完成一块后,过一定的时间查看
hadoop fsck / 是否有缺失的block,Mis-replicated blocks和Corrupt blocks为0再更换下一块磁盘

2.去机房找到要需要更换的磁盘,把新的磁盘给换上去
然后在磁盘上创建刚刚被去掉的路径,目录和权限参照节点下其他盘的相同目录

3.参照步骤1,把加入的磁盘按照刚刚去掉的操作给重新加上,目录和原来保持一致
修改后配置服务,重启服务

4.换盘结束,最后查看hadoop fsck /看数据是否完整