MAPREDUCE服务 MRS-HBase数据:CopyTable

时间:2024-04-16 08:56:36

CopyTable

拷贝表功能与导出功能类似,拷贝表也使用HBase API创建了一个MapReduce任务,以便从源表读取数据。不同的地方是拷贝表的输出是hbase中的另一张表,这张表可以在本地集群,也可以在远程集群。详情请参考http://hbase.apache.org/2.2/book.html#copy.table

  • 该方式数据备份的优点:

    操作简单,在线拷贝不中断业务,可以指定备份数据的startrow/endrow/timestamp。

  • 该方式数据备份的缺点和限制:

    只能单表操作,远程拷贝数据量大时效率较低,MapReduce需要占用本地资源,MapReduce的map个数以表region的个数划分。

在备集群执行如下操作:

执行create命令在备集群上新建与主集群相同结构的表,例如member_copy。

在主集群执行如下操作:

执行CopyTable的命令拷贝表。

hbase org.apache.hadoop.hbase.mapreduce.CopyTable [--starttime=xxxxxx] [--endtime=xxxxxx] --new.name=member_copy --peer.adr=server1,server2,server3:2181:/hbase [--families=myOldCf:myNewCf,cf2,cf3] TestTable

  • starttime/endtime为待拷贝数据的时间戳。
  • new.name为备集群中目的表的表名,默认为和原来表名相同。
  • peer.adr为备集群zookeeper节点的信息,格式为quorumer:port:/hbase。
  • families为待拷贝的表的family列。

如果是拷贝数据到远端集群,此种方式导入数据会在主机群上提交MapReduce任务,读取原始表的全量/部分数据之后采用put的方式写入远端集群,所以如果表的数据量很大(远程拷贝不支持bulkload),则效率会比较低。

support.huaweicloud.com/bestpractice-mrs/mrs_05_0039.html