HDFS数据迁移主要通过工具配置和参数设置实现,以下是核心步骤及配置要点:
推荐工具:优先使用Hadoop自带工具distcp,支持分布式并行迁移,适合大规模数据。
安装要求:确保源、目标集群已正确安装Hadoop,且版本兼容(跨版本需注意协议适配,如HDFS 2.x→3.x需调整参数)。
通过distcp命令配置迁移策略,常用参数如下:
-m <num>:设置并行任务数(Map任务数量),根据集群资源调整(如-m 100表示同时运行100个任务)。-bandwidth <value>:限制单个任务带宽(单位:MB/s),避免占用过多网络资源(如-bandwidth 10限制为10MB/s)。-p <权限>:保留文件权限、属组等元数据(如-p rbugp保留读、写、属主等权限)。-update:仅迁移源中比目标更新的文件,适合增量迁移。-delete:删除目标中源不存在的文件,保持目录结构一致(谨慎使用,建议先测试)。-strategy <策略>:选择分片策略,dynamic动态分配任务,适合文件大小不均的目录。预检查
hdfs dfs -du -h /命令统计源数据规模,按业务分目录规划迁移批次。iperf等工具测试带宽,避免迁移期间影响线上业务。执行迁移
hadoop distcp hdfs://source-namenode:port/source-path hdfs://target-namenode:port/target-path \
-m 50 -bandwidth 20 -p rbugp
(示例:使用50个Map任务,限制带宽20MB/s,保留文件权限)。hadoop distcp -update hdfs://source-namenode:port/source-path hdfs://target-namenode:port/target-path
(仅同步源中更新的文件)。验证与校验
distcp的-checksum参数校验数据一致性,或通过hdfs dfs -ls -R对比文件列表。hdfs dfs -stat %u:%g <文件路径>查看属主属组。dfs.client.failover.proxy.provider参数,指向正确的NameNode高可用代理。distcp命令前配置kinit认证,或添加-skipcrccheck参数跳过校验(仅适用于测试环境)。-strategy dynamic参数,避免单个Map任务处理过大数据块。crontab定时执行迁移任务。distcp -i参数忽略错误继续执行,或回退到备份数据。参考来源: