在 CentOS 上迁移 HDFS,常见场景有几种,不同场景做法不一样。下面我按最常见、最安全的迁移方式给你一个系统的说明,你可以对照自己的情况选择。
| 场景 | 推荐方式 |
|---|---|
| HDFS 升级(同集群) | 滚动升级 / 停机升级 |
| 集群间迁移(老集群 → 新集群) | DistCp(推荐) |
| 单节点迁移 | 直接拷贝 NameNode / DataNode 数据 |
| 云迁移 / 跨机房 | DistCp + 带宽控制 |
hadoop distcp \
hdfs://old-nn:8020/user/hive/warehouse \
hdfs://new-nn:8020/user/hive/warehouse
✅ 自动并行复制
✅ 支持断点续传
✅ 保留目录结构
hadoop distcp \
-update \
-skipcrccheck \
-m 20 \
-bandwidth 50 \
hdfs://old-nn:8020/ \
hdfs://new-nn:8020/
参数说明:
| 参数 | 作用 |
|---|---|
-update |
只同步变化文件 |
-skipcrccheck |
加快速度 |
-m |
map 数量 |
-bandwidth |
限制带宽(MB/s) |
hdfs dfs -du -h /user
或对比文件数:
hdfs dfs -ls /user/hive/warehouse | wc -l
stop-dfs.sh
scp -r /data/hadoop/dfs/name node2:/data/hadoop/dfs/
scp -r /data/hadoop/dfs/data node2:/data/hadoop/dfs/
vim $HADOOP_HOME/etc/hadoop/core-site.xml
vim hdfs-site.xml
更新:
fs.defaultFSdfs.namenode.name.dirdfs.datanode.data.dirstart-dfs.sh
hdfs dfsadmin -upgradeProgress status
hdfs namenode -upgrade
hdfs namenode -rollback
⚠️ 升级前一定要做元数据备份
cp -r /data/hadoop/dfs/name /backup/name-$(date +%F)
hive-site.xmlMSCK REPAIR TABLE table_name;
/hbase 目录hbase hbck
systemctl stop firewalld
systemctl enable chronyd
ulimit -n 65536
| 场景 | 建议 |
|---|---|
| 生产环境 | DistCp |
| 小数据 | 直接 scp |
| 升级 | 官方升级流程 |
| 云迁移 | DistCp + 限速 |
如果你愿意,可以直接告诉我:
1️⃣ Hadoop 版本
2️⃣ 是否跨集群
3️⃣ 是否带 Hive / HBase
4️⃣ 数据量大小
我可以给你一份 针对你环境的迁移方案 + 命令清单 ✅