markdown HDFS不同集群迁移实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown HDFS不同集群迁移实践相关的知识,希望对你有一定的参考价值。

# HDFS不同集群迁移实践
在实际环境中,HDFS集群上的数据可能是不间断的输入,此时如果直接用distcp复制集群的数据可能会导致
执行失败或拷贝的一些数据在目标集群上不可用。

可通过在源集群中创建一个快照(snapshot),然后基于快照的数据进行迁移。后续还可基于快照进行增量的更新。

以下为具体的执行步骤
## 在源集群上,对需要迁移的目录设置允许快照并创建快照
```bash
hdfs dfsadmin -allowSnapshot /data/a
hdfs dfs -createSnapshot /data/a snapshot_name
```
此时,会在`/data/a`下生成一个`.snapshot`目录此下面一级目录中有个`snapshot_name`的子目录名称。

注意:已开启过快照的目录,其下子目录不允许再开启了

## 在目标集群上执行迁移动作
```bash
# 若已存在目标目录,则不执行创建目录动作
hdfs dfs -mkdir /data/a

hadoop distcp -update -pb hdfs://old-emr-header-1/data/a/.snapshot/snapshot_name hdfs://emr-cluster/data/a
```
`old-emr-header-1`是源集群上的IP, 也可以是能被解析的域名,但这域名必须能在目录集群中所有节点服务器都能解析

__迁移动作不一定非在目标集群中执行,视两个集群上的负载程度__

## 数据增量更新(网络上有人实践过,我未实践过)
在源集群上再次创建快照
```bash
hdfs dfs -createSnapshot /data/a snapshot_name_1

# 可通过以下命令查看两个快照间的差异
hdfs snapshotDiff /data/a snapshot_name snapshot_name_1
```

在目录集群上执行迁移动作
```bash
hadoop distcp -diff snapshot_name snapshot_name_1 -update -pb hdfs://old-emr-header-1/data/a hdfs://emr-cluster/data/a
```

以上是关于markdown HDFS不同集群迁移实践的主要内容,如果未能解决你的问题,请参考以下文章

HDFS跨集群(Insecure To Secure)数据迁移实战

HDFS PB级数据无感迁移实践

HDFS PB级数据无感迁移实践

腾讯 Elasticsearch 数据迁移与容灾实践 | 活动通知

HDFS集群应用与优化实践(hadoop2.7.2)

万台 HDFS 集群规模在快手的挑战与实践