1.确定要distcp的目录
Hadoop集群一般是逐步扩容的, 对于老的静态数据就会集中存储在老的Datanode上,导致老的Datanode的空间占用率很高。
找出陈旧的静态数据目录使用distcp命令拷贝到新目录是一种“
安全
”的做法。
找出陈旧的静态数据目录的标准:
目录创建时间和里面内容的最后修改时间;
业务方确认,discp中间避免导入;
大小适中,尽量在一个时间窗口(1-7天)可以结束;
2.这里选择如下路径
3.开始distcp
su - hdfs
nohup hadoop distcp hdfs://getui-bi-storage/data_result/app hdfs://getui-bi-storage/data_result/app_new &
4.distcp监控
在yarn的任务列表可以查看:
MR任务具体执行情况:
5.distcp stop方法
方式一:CDH页面
方式二:命令行
yarn application -list找出applicationid
yarn application -kill application_1507729982008_9645
即可。
6.distcp结束后数据校验
6.1 比较目录大小
6.2 读取一个文件
hadoop fs -copyToLocal /data_result/app_new/actived/20151231/part-r-00188.gz /tmp
gunzip part-r-00188.gz
more part-r-00188
6.3 检验文件的权限和属主
7.性能分析
移动数据:63.8T 191.5T
耗时:
39hrs, 13mins, 43sec
移动数据速度(GB/h): 1.6T * 3 = 4.8T
balancer每小时移动数据200GB左右,distcp
比balancer快20倍左右。
8.删除废弃数据
hadoop fs -mv hdfs://getui-bi-storage/data_result/app hdfs://getui-bi-storage/data_result/app_old # 修改原来目录的文件名
hadoop fs -mv hdfs://getui-bi-storage/data_result/app_new hdfs://getui-bi-storage/data_result/app # distcp之后的目录替换原来的目录
hadoop fs -rm -R hdfs://getui-bi-storage/data_result/app_old # 删除老的文件目录