distcp数据迁移方案

数据迁移distcp方案

  • 概况:

根据迁移的实际情况,由于数据量大、重要、迫切性,因此实施方案每一步都需严谨执行,并且当出错时清楚缺少的数据和补救的办法。

  • 具体实施计划:
  1. 大的步骤分为3步,即export、distcp、import。
  2. 在export导出数据时,以时间戳作为参数,如将三个月的数据为一个单位导出,出错时,重复执行。命令案例:

sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Export  ship_historical_trace  /ship_historical_trace0  1  0  1514736000000

注释:

1514736000000 2018-01-01 00:00:00的时间戳

sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Export  ship_historical_trace  /ship_historical_trace1  1   1514736000000  1522425600000

注释:

1514736000000 2018-01-01 00:00:00的时间戳

1522425600000 2018-03-31 00:00:00的时间戳

………

  1. 在执行distcp拷贝文件时,首先确定以下几点:

(1)首先确保两个集群的mapreduce计算框架没问题

(2)开通目标集群所有机器到源集群namenode节点的网络

(3)版本差距不是很大时,用hdfs协议;版本差距较大时,用hftp协议

(4)在ambari在的节点上使用命令,只有该节点可以免密登录其他机器

(5)文件拷贝的路径需要写namenode存在节点,因为只用它开启了rpc端口

(6)在目标集群的ambari节点执行命令

 命令案例:

sudo -u hdfs hadoop distcp -i hdfs://192.168.16.1:8020/ship_historical_trace0   hdfs://172.172.160.101/

 

sudo -u hdfs hadoop distcp -i hdfs://192.168.16.1:8020/ship_historical_trace1   hdfs://172.172.160.101/

……….

  1. import导入数据的性能:
  1. 原数据表已存在key,不会修改
  2. 原数据没有数据,做插入操作

命令案例:

sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Import ship_historical_trace  /ship_historical_trace0

 

sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.Import ship_historical_trace  /ship_historical_trace1

………

  • 评估操作是否成功的方法:
  1. 根据yarn或mapreduce的节点端口8088查看job任务的进度。根据job的id得知哪些操作失败,将操作失败命令做再次尝试。
  2. 根据namenode节点端口50070查看具体文件的个数情况,粗略判断是否成功。
  3. 使用命令查看hdfs具体文件夹大小

sudo -u hdfs hadoop fs -du –h  /ship_historical_trace0

  1. 在文件夹拷贝过程中,单个文件丢失时,可单独拷贝该文件:

sudo -u hdfs hadoop distcp -i  hdfs://192.168.16.1:8020/ship_historical_trace0/part-m-00000   hdfs://172.172.160.101/ship_historical_trace/part-m-00000

  1. 操作成功后,使用hbase shell命令随机查看两集群几组数据,进行比较
  • 测试效率统计:

文件大小

export用时

distcp用时

import用时

632.7G

24小时

13小时(跨集群)

(期间磁盘满了,操作失败)

44.53 GB

(没做)

615秒(集群内)

1小时8分(跨集群)

4小时

你可能感兴趣的:(distcp数据迁移方案)