阿川CH
学海无涯,上栽上栽!
Toggle navigation
阿川CH
主页
归档
标签
HDFS不同集群迁移实践
Hadoop
HDFS
数据迁移
2018-03-14 15:03:57
6
0
0
cqc
Hadoop
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 # 若后续还需增量更新,则还需在目标集群上创建相同的镜像名 hdfs dfsadmin -allowSnapshot /data/a hdfs dfs -createSnapshot /data/a snapshot_name ``` `old-emr-header-1`是源集群上active namenode的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 ``` 参考: [Managing Hadoop DR with 'distcp' and 'snapshots'](https://community.hortonworks.com/articles/71775/managing-hadoop-dr-with-distcp-and-snapshots.html) [DistCp Guide](https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html#Command_Line_Options)
上一篇:
HBase(Phoenix)集群迁移实践
下一篇:
shell变量操作
文档导航