Fayson的github: https://github.com/fayson/cdhproject
推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f
1 文档编写目的
CDSW使用一段时间以后,Master节点的/var/lib/cdsw目录挂载的是单块磁盘没有做raid等数据备份而且已经运行时间长达两年,因此为规避磁盘低概率损坏造成数据丢失风险,现准备将该目录的数据进行迁移至做了raid且空间更大的磁盘中。
由于现有/var/lib/cdsw存储的数据量已经高达3T之巨,为了不影响业务需要在规定时间内(5小时)将数据进行迁移,需要选择一种快速的迁移手段进行迁移,本文将对linux现有的数据迁移同步工具rsync进程模拟测试。
变更步骤
1.使用rsync将根分区下的/var/lib/cdsw目录下的数据在CDSW服务正常使用情况下;同步至/dev/mapper/vg_data0-lv_data0 分区的/data0目录下
2.将CDSW服务停掉检查根分区下的/var/lib/cdsw目录是否还有进程在操作,如果没有则使用相同的命令再同步一次,这一次会同步更新差异文件。
3.将/dev/mapper/vg_data0-lv_data0挂载到/var/lib/cdsw目录下,启动服务。
变更环境
1.RedHat7.2
2.跨盘迁移
2 测试前集群检查
服务正在运行
从上图可知,/var/lib/cdsw有进程在操作。
有session在打开,有作业在运行。
目录挂载情况
3 服务不停止限速迁移
3.1 服务不停止数据迁移
这个过程由于有服务在使用(有作业在运行)因此为了不影响业务对该迁移进行限速最高速度不超过50M/s,测试步骤及结果如下:
time rsync -ac --partial --bwlimit 800000 --delete /var/lib/cdsw/ /var/lib/cdsw1
经过限速,对磁盘的读取速度都没有超过限速阈值。
#!/bin/bash
#nohup time rsync -ac --partial --bwlimit 800000 --delete /var/lib/cdsw/ /var/lib/cdsw1 2>&1 &
#nohup date 2>&1 &
参数解析:
–partial:断点续传
-a : --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-c: 打开校验开关,强制对文件传输进行校验
–bwlimit 800000:限速80M/s
–delete: 删除那些DST中SRC没有的文件。
3.2 修改文件测试
在服务停止前对cdsw文件进行修改,待停止服务进行数据搬迁到新设备作为检查依据。
4 服务停止不限速迁移
4.1 停止作业及服务
1.停止作业;停掉集群上所有作业。
2.停掉cdsw服务;停止CDSW集群
服务已经停止
4.2 数据迁移
1.检查/var/lib/cdsw目录是否还有进程在操作。
lsof +D /var/lib/cdsw
该目录下已经没有进程在操作。
2.数据目录搬迁,此次搬迁为更新上一次有服务在使用且发生变化的文件;因为没有服务在使用,此次不用限速,操作如下:
time rsync -ac --partial --delete /var/lib/cdsw/ /var/lib/cdsw1
参数解析:
-a: --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-c: 打开校验开关,强制对文件传输进行校验
–delete: 删除那些DST中SRC没有的文件。
–partial: 断点续传
3.将挂载点/var/lib/cdsw和/var/lib/cdsw1进行umount
umount /var/lib/cdsw
umount /var/lib/cdsw1
4.将/var/lib/cdsw挂载到/dev/sdb
mount /dev/sdb /var/lib/cdsw
mount /dev/sdc /var/lib/cdsw1
4.3 启动CDSW服务
回到CM启动CDSW服务
服务正常
可以登录cdsw
验证数据
4.4 执行任务测试
执行spark Pi进行测试
程序运行完成,测试成功。