CentOS 环境下 HDFS 数据迁移策略
一 策略总览与适用场景
hadoop distcp hdfs://nn1:8020/src hdfs://nn2:8020/dst;不同版本可用只读 HFTP:hadoop distcp hftp://nn1:50070/src hdfs://nn2:8020/dst(DistCp 运行在目标集群)。二 标准流程与关键命令
hdfs dfs -du -h /path;按业务划分目录与优先级。hadoop distcp -m 200 -bandwidth 200 hdfs://src/ hdfs://dst/(示例并发 200、每 map 带宽 200 MB/s)。hadoop distcp -pbug hdfs://src/ hdfs://dst/(保留 replication/block-size/user/group/permission)。hadoop distcp -update -delete -pbug hdfs://src/ hdfs://dst/(仅传差异;目标端多余文件可被删除)。hadoop distcp -diff <fromSnap> <toSnap> hdfs://src/ hdfs://dst/(大幅缩短对比时间)。hdfs dfs -count -q /path;抽样或全量 checksum 比对;核对目录结构与权限。三 性能与稳定性优化
-m 与每 map 带宽 -bandwidth 共同决定吞吐;并发过高会抢占业务带宽与集群资源,建议结合 DN 数量与业务 SLA 逐步调优。-strategy dynamic 让快 map 多干活,避免“长尾”;提升列表构建并发 -numListstatusThreads(如 100–200)。-direct 直接写目标路径,减少临时目录与 rename 开销;-atomic 保证“全部成功或全部回滚”。-i 忽略失败任务继续拷贝;网络/磁盘抖动时可临时使用 -skipcrccheck(谨慎,确保大小一致)。四 常见场景与命令模板
hadoop distcp -pbug -m 300 -bandwidth 500 hdfs://nn1:8020/data hdfs://nn2:8020/datahadoop distcp -update -delete -pbug -m 200 hdfs://nn1:8020/data hdfs://nn2:8020/datahdfs dfsadmin -allowSnapshot /data && hdfs dfs -createSnapshot /data snapAhdfs dfs -createSnapshot /data snapBhadoop distcp -diff snapA snapB -pbug hdfs://nn1:8020/data hdfs://nn2:8020/datahadoop distcp -m 200 hdfs://nn1:8020/data cosn://bucket/datahadoop fs -put local_file /hdfs/path;下载:hadoop fs -get /hdfs/path local_file五 迁移前后配套工作与风险控制