加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

HBase数据迁移方案介绍

发布时间:2019-08-09 12:15:30 所属栏目:MySql教程 来源:ballwql
导读:副标题#e# 一、前言 HBase数据迁移是很常见的操作,目前业界主要的迁移方式主要分为以下几类: 图1.HBase数据迁移方案 从上面图中可看出,目前的方案主要有四类,Hadoop层有一类,HBase层有三类。下面分别介绍一下。 二、Hadoop层数据迁移 2.1 方案介绍 Had

在创建一个snapshot之后:snapshot 'test', 'snapshot_test',在/hbase/.hbase-snapshot目录信息如下:

  1. hbaseuser~> hadoop fs -ls /hbase/.hbase-snapshot/snapshot_test  
  2. Found 4 items  
  3. -rw-r--r--   1 hbaseuser supergroup         32 2017-12-01 12:13 /hbase/.hbase-snapshot/snapshot_test/.snapshotinfo  
  4. drwxr-xr-x   - hbaseuser supergroup          0 2017-12-01 12:13 /hbase/.hbase-snapshot/snapshot_test/.tabledesc  
  5. drwxr-xr-x   - hbaseuser supergroup          0 2017-12-01 12:13 /hbase/.hbase-snapshot/snapshot_test/.tmp  
  6. drwxr-xr-x   - hbaseuser supergroup          0 2017-12-01 12:13 /hbase/.hbase-snapshot/snapshot_test/d8340c61f5d77345b7fa55e0dfa9b492 

在clone_snapshot之后:clone_snapshot 'snapshot_test','new_test',在/hbase/archive/data/default目录,有对原表的link目录,目录名只是在原HFile的文件名基础上加了个links-前缀,这样我们可以通过这个来定位到原表的HFile,如下所示:

  1. hbaseuser:~> hadoop fs -ls /hbase/archive/data/default/test/d8340c61f5d77345b7fa55e0dfa9b492/i  
  2. Found 1 items  
  3. drwxr-xr-x   - hbaseuser supergroup          0 2017-12-01 12:34 /hbase/archive/data/default/test/d8340c61f5d77345b7fa55e0dfa9b492/i/.links-55c5de40f58f4d07 

此时,再执行合并操作:major_compact 'new_test',会发现/hbase/archive/data/default/目录已经变成了实际表的数据文件,上面图中/hbase/archive/data/default/test/d8340c61f5d77345b7fa55e0dfa9b492/i/.links-55c5de40f58f4d07这个已经不在了,取而代之的是如下所示文件:

  1. hbaseuser:~> hadoop fs -ls /hbase/archive/data/default/new_test/7e8636a768cd0c6141a3bb45b4098910/i  
  2. Found 1 items  
  3. -rw-r--r--   1 hbaseuser supergroup          0 2017-12-01 12:48 /hbase/archive/data/default/new_test/7e8636a768cd0c6141a3bb45b4098910/i/test=d8340c61f5d77345b7fa55e0dfa9b492-55c5de40f58f4d07aed767c5d250191c 

在实际的/hbase/data/default/new_test目录也是实际的原表的数据文件,这样完成了表数据的迁移。

3.3.3 snapshot数据迁移

snapshot的应用场景和上面CopyTable描述差不多,我们这里主要考虑的是数据迁移部分。数据迁移主要有以下几个步骤:

A.创建快照:在原集群上,用snapshot命令创建快照,命令如下:

  1. hbase> snapshot  'src_table', 'snapshot_src_table'  
  2. #查看创建的快照,可用list_snapshots命令  
  3. hbase> list_snapshots   
  4. #如果快照创建有问题,可以先删除,用delete_snapshot命令  
  5. hbase >delete_snapshot 'snapshot_src_table' 

创建完快照后在/hbase根目录会产生一个目录:

  1. /hbase/.hbase-snapshot/snapshot_src_table  
  2. #子目录下有如下几个文件  
  3. /hbase/.hbase-snapshot/snapshot_src_table/.snapshotinfo    
  4. /hbase/.hbase-snapshot/snapshot_src_table/data.manifest 

B.数据迁移: 在上面创建好快照后,使用ExportSnapshot命令进行数据迁移,ExportSnapshot也是HDFS层的操作,本质还是利用MR进行迁移,这个过程主要涉及IO操作并消耗网络带宽,在迁移时要指定下map数和带宽,不然容易造成机房其它业务问题,如果是单独的MR集群,可以在MR集群上使用如下命令:

  1. hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot   
  2. -snapshot snapshot_src_table    
  3. -copy-from hdfs://src-hbase-root-dir/hbase   
  4. -copy-to hdfs://dst-hbase-root-dir/hbase   
  5. -mappers 20   
  6. -bandwidth 20 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读