Ubuntu环境下HDFS迁移通用步骤(基于Hadoop生态)
hdfs dfsadmin -report查看NameNode/DataNode状态,yarn node -list查看NodeManager状态。hdfs dfs -du -h /命令查看源集群各目录的总数据量(如/user、/data等业务目录),按业务重要性划分迁移优先级(如核心业务数据优先)。/user目录,再迁移/data目录);若带宽有限,可通过-bandwidth参数限制distcp带宽(如-bandwidth 100表示每秒100MB)。distcp工具(支持分布式并行复制,效率高),也可选择DataX、Sqoop等第三方工具(适用于复杂场景)。迁移前需在小数据量(如1GB)目录下测试distcp命令的正确性(如hadoop distcp hdfs://old-namenode:9000/test hdfs://new-namenode:9000/test),验证数据一致性和工具兼容性。hadoop distcp hdfs://old-namenode:port/source_path hdfs://new-namenode:port/destination_path(如hadoop distcp hdfs://old:9000/user/root hdfs://new:9000/user/root)。-m 100:设置并行Map任务数为100(根据集群资源调整,提升迁移速度);-bandwidth 50:限制带宽为50MB/s(避免占用过多网络资源,影响线上业务);-p:保留文件权限、所有者、组等属性(确保迁移后权限一致);-update:仅更新目标集群中已存在且内容不同的文件(避免重复复制);-delete:删除目标集群中源集群不存在的文件(严格同步目录结构,慎用)。hftp协议(源集群开启HFTP服务)或webhdfs协议(需配置HDFS Web接口),命令示例:hadoop distcp hftp://old-namenode:50070/source_path hdfs://new-namenode:9000/destination_path。-update参数重新运行distcp命令,观察是否有新增或修改的文件(如hadoop distcp -update hdfs://old:9000/source hdfs://new:9000/destination);hdfs dfs -du -s hdfs://old:9000/source和hdfs dfs -du -s hdfs://new:9000/destination对比总大小,hdfs dfs -count hdfs://old:9000/source和hdfs dfs -count hdfs://new:9000/destination对比文件/目录数量;hdfs dfs -ls -h hdfs://old:9000/source和hdfs dfs -ls -h hdfs://new:9000/destination对比文件权限(如-rw-r--r--)、所有者(如root)、组(如supergroup)等属性,确保与源集群一致(若迁移时未使用-p参数,需手动修复权限:hdfs dfs -chmod -R 755 /destination,hdfs dfs -chown -R root:supergroup /destination)。hive.metastore.warehouse.dir、Spark的spark.hadoop.fs.defaultFS),指向新集群;SELECT COUNT(*) FROM table)或Spark作业(如读取HDFS文件并统计行数),验证数据访问是否正常,应用是否报错。fs.defaultFS参数,重启应用服务)。切换前需通知相关人员(如开发、运维),避免误操作。stop-dfs.sh);fsimage、edits文件)和重要数据(如有必要);