在 Linux 环境下迁移 Hadoop,通常分为同集群数据迁移、集群间迁移(扩容/换机器/换机房)、以及元数据与配置迁移。下面按常见场景给你一个实用指南。
明确迁移目标
环境一致性
备份关键数据
# NameNode 元数据
cp -r ${HADOOP_HOME}/etc/hadoop /backup/hadoop_conf
# 快照或 distcp 前先做 fsck
hdfs fsck / -files -blocks -locations
hadoop distcp \
hdfs://old-nn:9000/ \
hdfs://new-nn:9000/
hadoop distcp \
hdfs://old-nn:9000/user \
hdfs://new-nn:9000/user
hadoop distcp -bandwidth 10 \
hdfs://old-nn:9000/ \
hdfs://new-nn:9000/
hadoop distcp \
hftp://old-nn:50070/ \
hdfs://new-nn:9000/
scp -r /data/hdfs/dn newhost:/data/hdfs/
scp -r $HADOOP_HOME/etc/hadoop newhost:$HADOOP_HOME/etc/
hdfs --daemon start datanode
hdfs --daemon stop namenode
scp -r /data/hdfs/nn newhost:/data/hdfs/nn
core-site.xml / hdfs-site.xmlhdfs namenode -format
必须迁移的文件:
core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xmlworkers / slaves/data/hdfs/nn(NameNode)/data/hdfs/dn(DataNode)hdfs dfs -ls /
hdfs dfsadmin -report
hdfs fsck /
scp 正在运行的 HDFS 数据(会损坏)如果你能说明:
我可以给你更精确的迁移步骤和命令。