温馨提示×

linux hadoop怎迁移

小樊
34
2026-10-19 04:02:28
栏目: 智能运维

在 Linux 环境下迁移 Hadoop,通常分为同集群数据迁移、集群间迁移(扩容/换机器/换机房)、以及元数据与配置迁移。下面按常见场景给你一个实用指南。


一、迁移前准备

  1. 明确迁移目标

    • 是否换机器但保留集群?
    • 是否新建集群后迁数据?
    • 是否升级 Hadoop 版本?
  2. 环境一致性

    • OS 版本(CentOS / Ubuntu)
    • Java 版本
    • Hadoop 版本(尽量一致,避免兼容问题)
    • 用户(hdfs / yarn)UID/GID 一致
  3. 备份关键数据

    # NameNode 元数据
    cp -r ${HADOOP_HOME}/etc/hadoop /backup/hadoop_conf
    # 快照或 distcp 前先做 fsck
    hdfs fsck / -files -blocks -locations
    

二、集群间数据迁移(最常用:distcp)

1. 新集群已搭建好

hadoop distcp \
  hdfs://old-nn:9000/ \
  hdfs://new-nn:9000/

2. 指定目录迁移

hadoop distcp \
  hdfs://old-nn:9000/user \
  hdfs://new-nn:9000/user

3. 带带宽限制(生产推荐)

hadoop distcp -bandwidth 10 \
  hdfs://old-nn:9000/ \
  hdfs://new-nn:9000/

4. 跨版本 Hadoop

hadoop distcp \
  hftp://old-nn:50070/ \
  hdfs://new-nn:9000/

三、整机 / 节点迁移(换服务器)

1. DataNode 迁移

  • 新机器安装相同 Hadoop
  • 拷贝:
    scp -r /data/hdfs/dn newhost:/data/hdfs/
    scp -r $HADOOP_HOME/etc/hadoop newhost:$HADOOP_HOME/etc/
    
  • 启动:
    hdfs --daemon start datanode
    

2. NameNode 迁移(重点)

  1. 停止旧 NN
    hdfs --daemon stop namenode
    
  2. 拷贝元数据
    scp -r /data/hdfs/nn newhost:/data/hdfs/nn
    
  3. 修改 core-site.xml / hdfs-site.xml
  4. 格式化(仅首次):
    hdfs namenode -format
    
  5. 启动 NN 并做 HA 切换(如用 JournalNode)

四、配置与元数据迁移

必须迁移的文件:

  • core-site.xml
  • hdfs-site.xml
  • yarn-site.xml
  • mapred-site.xml
  • workers / slaves
  • /data/hdfs/nn(NameNode)
  • /data/hdfs/dn(DataNode)

五、验证迁移结果

hdfs dfs -ls /
hdfs dfsadmin -report
hdfs fsck /

六、常见坑

  • ❌ 直接 scp 正在运行的 HDFS 数据(会损坏)
  • ❌ NN 和 DN 版本不一致
  • ❌ 防火墙未开 9000 / 50070 / 8088
  • ✅ 迁移前后 UID/GID 必须一致

如果你能说明:

  • 是 同集群换机器 还是 新旧集群
  • Hadoop 版本
  • 是否开启 HA

我可以给你更精确的迁移步骤和命令。

0 踩