温馨提示×

linux hadoop怎么迁移

小樊
48
2026-10-10 10:09:08
栏目: 智能运维

在 Linux 环境下迁移 Hadoop,通常指把 Hadoop 集群(或单节点)从一台/一批机器迁移到另一台/另一批机器,或从一个目录迁移到另一个目录。下面按常见场景给你一套实用方案。


一、迁移前准备

1. 明确迁移类型

  • ✅ 同集群换机器(节点迁移)
  • ✅ 集群整体搬迁(新集群)
  • ✅ Hadoop 安装目录迁移
  • ✅ 数据 + 元数据完整迁移

2. 停止 Hadoop 服务

stop-dfs.sh
stop-yarn.sh

3. 备份关键配置

cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop_conf

二、方式一:整目录拷贝(最常用)

适用于

  • 单机 / 伪分布式
  • 测试环境
  • 同版本 Hadoop

步骤

  1. 打包 Hadoop 目录
tar -czvf hadoop.tar.gz $HADOOP_HOME
  1. 拷贝到目标机器
scp hadoop.tar.gz user@new-host:/opt/
  1. 解压并配置环境变量
tar -xzvf hadoop.tar.gz -C /opt/
  1. 修改配置(如 IP、hostname)
vi $HADOOP_HOME/etc/hadoop/core-site.xml
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml
vi $HADOOP_HOME/etc/hadoop/workers

三、方式二:HDFS 数据迁移(DistCp,推荐生产)

适用于

  • 新老集群并存
  • 跨机房 / 跨版本

1. 新集群已部署 Hadoop

2. 使用 distcp

hadoop distcp hdfs://old-cluster:9000/ hdfs://new-cluster:9000/

常见参数:

hadoop distcp -m 20 -update -delete hdfs://old/ hdfs://new/

说明:

  • -m:并行数
  • -update:只同步变化
  • -delete:删除目标多出文件

四、方式三:NameNode 元数据迁移

适用于

  • 只迁移 NameNode
  • 保留 DataNode 不变

步骤

  1. 拷贝元数据
scp -r /data/hadoop/dfs/name new-nn:/data/hadoop/dfs/
  1. 修改配置
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/data/hadoop/dfs/name</value>
</property>
  1. 格式化(仅在全新 NN 时)
hdfs namenode -format

⚠️ 不要随便 format 已有数据


五、方式四:Hadoop 安装目录迁移

步骤

  1. 停止服务
  2. 移动目录
mv /usr/local/hadoop /data/hadoop
  1. 修改环境变量
vi ~/.bashrc
export HADOOP_HOME=/data/hadoop
  1. 修改配置路径
vi $HADOOP_HOME/etc/hadoop/hdfs-site.xml

六、迁移后检查

hdfs dfsadmin -report
hdfs fsck /
yarn node -list

七、常见问题

1. DataNode 不启动

  • clusterID 不一致
cat /data/hadoop/dfs/name/current/VERSION
cat /data/hadoop/dfs/data/current/VERSION

2. 权限问题

chown -R hadoop:hadoop /data/hadoop

3. 主机名解析

/etc/hosts
/etc/hostname

八、建议

  • ✅ 生产环境:用 DistCp
  • ✅ 测试环境:直接 tar + scp
  • ✅ 大集群:先迁数据,再切 NameNode

如果你能告诉我:

  • 是 单机还是集群
  • 同版本还是升级
  • 是否停机迁移

我可以给你一套更精确的迁移命令。

0 踩