温馨提示×

linux hdfs怎么迁移数据

小樊
44
2026-09-10 13:02:22
栏目: 智能运维

在 Linux 环境下迁移 HDFS 数据,常见场景和做法如下,按使用频率场景给你整理一份实用指南。


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

1. hdfs dfs -cp(最常用)

hdfs dfs -cp /source/path /target/path

✅ 适合:

  • 同集群
  • 小到中等数据量
  • 简单复制

❌ 不适合:

  • 超大数量文件(慢)
  • 需要限速

2. hdfs dfs -mv

hdfs dfs -mv /source/path /target/path

✅ 只改元数据,不复制数据(快)
❌ 只能同集群、同 NameService


二、跨 HDFS 集群迁移(最典型)

1. distcp(官方推荐 ✅)

基本用法

hadoop distcp \
  hdfs://namenode1:8020/source \
  hdfs://namenode2:8020/target

常用参数

hadoop distcp \
  -p \
  -m 20 \
  -bandwidth 100 \
  hdfs://src:8020/path \
  hdfs://dst:8020/path

参数说明:

  • -p:保留权限、副本数、修改时间
  • -m:并发 map 数
  • -bandwidth:限速(MB/s)

✅ 适合:

  • 集群间迁移
  • TB / PB 级数据
  • 生产环境

2. 使用 ViewFS / Federation

如果集群配置了 Federation,可写:

hadoop distcp viewfs://srcCluster/path hdfs://dstCluster/path

三、从本地 Linux 文件系统迁移到 HDFS

1. put

hdfs dfs -put /local/path /hdfs/path

2. 大文件推荐

hdfs dfs -copyFromLocal -f /local/file /hdfs/path

四、HDFS 到 本地 Linux

hdfs dfs -get /hdfs/path /local/path

五、带权限/ACL/快照的迁移

1. 保留 ACL

hadoop distcp -p rbugpca src dst

2. 快照迁移(只读)

hadoop distcp /source/.snapshot/snap1 /target

六、常见坑 & 建议

✅ 建议

  • 大集群迁移一定用 distcp
  • 控制 -m-bandwidth
  • 先小目录测试

❌ 常见错误

  • 端口写错(8020 / 9000)
  • Kerberos 没认证
  • 目标目录已存在但非空

七、Kerberos 环境

kinit -kt keytab principal
hadoop distcp src dst

如果你能告诉我:

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

我可以直接给你可复制的命令模板

0