温馨提示×

CentOS如何迁移HDFS

小樊
40
2026-08-05 01:25:47
栏目: 智能运维

CentOS 上迁移 HDFS,常见场景有几种,不同场景做法不一样。下面我按最常见、最安全的迁移方式给你一个系统的说明,你可以对照自己的情况选择。


一、先明确迁移类型

场景 推荐方式
HDFS 升级(同集群) 滚动升级 / 停机升级
集群间迁移(老集群 → 新集群) DistCp(推荐)
单节点迁移 直接拷贝 NameNode / DataNode 数据
云迁移 / 跨机房 DistCp + 带宽控制

二、最常用方案:集群间 HDFS 迁移(DistCp)

适用场景

  • 新集群(CentOS + Hadoop)
  • 数据量较大
  • 不影响老集群运行

1️⃣ 前提条件

  • 两个集群 Hadoop 版本尽量一致(差异大需做兼容测试)
  • 网络互通(端口 8020 / 9000 / 50070 等)
  • 新集群 HDFS 已正常启动

2️⃣ 在新集群执行 DistCp(推荐)

hadoop distcp \
  hdfs://old-nn:8020/user/hive/warehouse \
  hdfs://new-nn:8020/user/hive/warehouse

✅ 自动并行复制
✅ 支持断点续传
✅ 保留目录结构


3️⃣ 常用参数(生产环境建议)

hadoop distcp \
  -update \
  -skipcrccheck \
  -m 20 \
  -bandwidth 50 \
  hdfs://old-nn:8020/ \
  hdfs://new-nn:8020/

参数说明:

参数 作用
-update 只同步变化文件
-skipcrccheck 加快速度
-m map 数量
-bandwidth 限制带宽(MB/s)

4️⃣ 校验数据一致性

hdfs dfs -du -h /user

或对比文件数:

hdfs dfs -ls /user/hive/warehouse | wc -l

三、同集群升级 / 迁移(NameNode 迁移)

场景

  • NameNode 换机器
  • 磁盘迁移

✅ 停机迁移(最安全)

1️⃣ 停止 HDFS

stop-dfs.sh

2️⃣ 拷贝元数据

scp -r /data/hadoop/dfs/name node2:/data/hadoop/dfs/

3️⃣ 拷贝数据目录

scp -r /data/hadoop/dfs/data node2:/data/hadoop/dfs/

4️⃣ 修改配置

vim $HADOOP_HOME/etc/hadoop/core-site.xml
vim hdfs-site.xml

更新:

  • fs.defaultFS
  • dfs.namenode.name.dir
  • dfs.datanode.data.dir

5️⃣ 启动 HDFS

start-dfs.sh

四、HDFS 升级(滚动升级)

1️⃣ 准备

hdfs dfsadmin -upgradeProgress status

2️⃣ 开始升级

hdfs namenode -upgrade

3️⃣ 回滚(出问题)

hdfs namenode -rollback

⚠️ 升级前一定要做元数据备份

cp -r /data/hadoop/dfs/name /backup/name-$(date +%F)

五、迁移 Hive / HBase 的注意事项

Hive

  • 迁移 HDFS 数据后
  • 修改 hive-site.xml
  • 修复元数据:
MSCK REPAIR TABLE table_name;

HBase

  • 必须 停止 HBase
  • 迁移 /hbase 目录
  • 启动后执行:
hbase hbck

六、CentOS 系统层面注意

  • 关闭防火墙或放行端口:
systemctl stop firewalld
  • 时间同步(非常重要):
systemctl enable chronyd
  • 文件句柄:
ulimit -n 65536

七、迁移方案选择建议

场景 建议
生产环境 DistCp
小数据 直接 scp
升级 官方升级流程
云迁移 DistCp + 限速

如果你愿意,可以直接告诉我: 1️⃣ Hadoop 版本
2️⃣ 是否跨集群
3️⃣ 是否带 Hive / HBase
4️⃣ 数据量大小

我可以给你一份 针对你环境的迁移方案 + 命令清单

0