distcp解决HDFS部分Datanode空间占用率高的问题

官方文档: http://hadoop.apache.org/docs/r1.2.1/distcp.html

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      # 删除老的文件目录


你可能感兴趣的:(hadoop,hdfs,日常操作)