温馨提示×

linux hdfs如何迁移

小樊
42
2026-10-16 06:36:30
栏目: 智能运维

在 Linux 环境下进行 HDFS 数据迁移,常见场景和做法如下,你可以根据实际需求选择。


一、同集群内迁移(目录/用户间)

1. hdfs dfs -mv

适合同集群、同 NameService 内移动数据

hdfs dfs -mv /user/old/data /user/new/data

✅ 秒级完成(只改元数据)
❌ 不能跨集群


二、跨集群迁移(最常用)

✅ 方案 1:distcp(官方推荐)

适合:集群间、量大、可断点

基本用法

hadoop distcp \
  hdfs://nn1:8020/source/path \
  hdfs://nn2:8020/target/path

常用参数

hadoop distcp \
  -p \
  -m 20 \
  -update \
  -delete \
  hdfs://source/path hdfs://target/path

参数说明:

  • -p:保留权限、副本数、时间
  • -m:并行 map 数
  • -update:只同步变化的文件
  • -delete:删除目标端多余文件

⚠️ 注意:

  • 两个集群 网络互通
  • 若启用 Kerberos,需两边都有凭证
  • 建议用 yarn 用户或管理员执行

✅ 方案 2:hdfs dfs -copyFromLocal / -put

适合:少量数据、从本地服务器

# 从旧集群下载
hdfs dfs -get /source/path /local/path

# 上传到新集群
hdfs dfs -put /local/path /target/path

❌ 慢、不适合 TB 级


✅ 方案 3:webhdfs / httpfs

适合:跨安全网络、不能直连

curl -i "http://nn:50070/webhdfs/v1/path?op=OPEN"

一般较少用于大规模迁移。


三、带权限/用户迁移

1. 保持用户和权限

hadoop distcp -p hdfs://src hdfs://dst

2. 切换用户

sudo -u hdfs hadoop distcp src dst

四、Kerberos 集群迁移

kinit -kt /etc/security/keytab/hdfs.keytab hdfs@REALM
hadoop distcp src dst

五、迁移前检查清单 ✅

  • [ ] 网络端口(8020 / 50070 / 9000)
  • [ ] 磁盘空间是否足够
  • [ ] 是否启用 HA(用 nameservice)
  • [ ] 是否有大文件 / 小文件问题
  • [ ] 是否需保留 ACL

六、示例:HA 集群迁移

hadoop distcp \
  hdfs://ns1/user/data \
  hdfs://ns2/user/data

如果你能告诉我:

  • 是否 同集群 / 跨集群
  • 是否 Kerberos
  • 数据量级别(GB / TB)
  • 是否 HA

我可以给你更精确的迁移命令和方案。

0 踩