加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

HBase数据迁移方案介绍

发布时间:2019-08-09 02:23:13 所属栏目:编程 来源:ballwql
导读:一、媒介 HBase数据迁徙是很常见的操纵,今朝业界首要的迁徙方法首要分为以下几类: 图1.HBase数据迁徙方案 从上面图中可看出,今朝的方案首要有四类,Hadoop层有一类,HBase层有三类。下面别离先容一下。 二、Hadoop层数据迁徙 2.1 方案先容 Hadoop层的数
副问题[/!--empirenews.page--]

一、媒介

HBase数据迁徙是很常见的操纵,今朝业界首要的迁徙方法首要分为以下几类:

HBase数据迁徙方案先容

图1.HBase数据迁徙方案

从上面图中可看出,今朝的方案首要有四类,Hadoop层有一类,HBase层有三类。下面别离先容一下。

二、Hadoop层数据迁徙

2.1 方案先容

Hadoop层的数据迁徙首要用到DistCp(Distributed Copy), 官方描写是:DistCp(漫衍式拷贝)是用于大局限集群内部和集群之间拷贝的器材。它行使Map/Reduce实现文件分发,错误处理赏罚和规复,以及陈诉天生。它把文件和目次的列表作为map使命的输入,每个使命会完成源列表中部门文件的拷贝。

我们知道MR措施适实用来处理赏罚大批量数据, 其拷贝本质进程是启动一个MR功课,不外DisctCp只有map,没有reducer。在拷贝时,因为要担保文件块的有序性,转换的最小粒度是一个文件,而不像其余MR功课一样可以把文件拆分成多个块启动多个map并行处理赏罚。假犹如时要拷贝多个文件,DisctCp会将文件分派给多个map,每个文件单唯一个map使命。我们可以在执行同步时指定-m参数来设定要跑的map数目,默认配置是20。假如是集群间的数据同步,还必要思量带宽题目,以是在跑使命时还必要设定 bandwitdh 参数,以防备一次同步过多的文件造成带宽过高影响其余营业。同时,因为我们HBase集群一样平常是不会开MR调治的,以是这里还必要用到单独的MR集群来作主备数据同步,即在跑使命时还必要指定mapreduce相干参数。

简朴的distcp参数情势如下:

  1. hadoop distcp hdfs://src-hadoop-address:9000/table_name  hdfs://dst-hadoop-address:9000/table_name 

假如是独立的MR集群来执行distcp,由于数据量很大,一样平常是按region目次粒度来传输,同时传输到方针集群时,我们先把文件传到姑且目次,最后再目标集群上load表,我们用到的情势如下:

  1. hadoop distcp   
  2. -Dmapreduce.job.name=distcphbase   
  3. -Dyarn.resourcemanager.webapp.address=mr-master-ip:8088    
  4. -Dyarn.resourcemanager.resource-tracker.address=mr-master-dns:8093     
  5. -Dyarn.resourcemanager.scheduler.address=mr-master-dns:8091     
  6. -Dyarn.resourcemanager.address=mr-master-dns:8090    
  7. -Dmapreduce.jobhistory.done-dir=/history/done/    
  8. -Dmapreduce.jobhistory.intermediate-done-dir=/history/log/   
  9. -Dfs.defaultFS=hdfs://hbase-fs/   
  10. -Dfs.default.name=hdfs://hbase-fs/   
  11. -bandwidth 20   
  12. -m 20   
  13. hdfs://src-hadoop-address:9000/region-hdfs-path   
  14. hdfs://dst-hadoop-address:9000/tmp/region-hdfs-path 

在这个进程中,必要留意源端集群到目标端集群计策是通的,同时hadoop/hbase版本也要留意是否同等,假如版本纷歧致,最终load表时会报错。

2.2 方案实验

迁徙要领如下:

第一步,假如是迁徙及时写的表,最好是遏制集群对表的写入,迁徙汗青表的话就不消了,此处举例表名为test;

第二步, flush表, 打开HBase Shell客户端,执行如下呼吁:

  1. hbase> flush 'test' 

第三步,拷贝表文件到目标路径,搜查源集群到方针集群计策、版本等,确认没题目后,执行如上带MR参数的呼吁

第四步, 搜查方针集群表是否存在,假如不存在必要建设与原集群沟通的表布局

第五步,在方针集群上,Load表到线上,在官方Load是执行如下呼吁:

  1. hbase org.jruby.Main add_table.rb /hbase/data/default/test 

对付我们来说,因我们先把文件同步到了姑且目次,并不在原表目次,以是我们回收的另一种情势的load,即以region的维度来Load数据到线上表,怎么做呢,这里用到的是org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles这个类,即以bulkload的情势来load数据。上面同步时我们将文件同步到了目标集群的/tmp/region-hdfs-path目次,那么我们在Load时,可以用如下呼吁来Load region文件:

  1. hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://dst-hadoop-address:9000/tmp/region-hdfs-path/region-name   table_name 

这里还用到一个参数hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily, 这个暗示在bulkload进程中,每个region列族的HFile数的上限,这里我们是限制了1024,也可以指定更少,按照现实需求来定。

第六步,搜查表数据是否OK,看bulkload进程是否有报错

在同步进程中,我们为加块同步速率,还会开个多线程来并发同步文件,这个可按照现实数据量和文件数来抉择是否必要行使并发同步。

三、HBase层数据迁徙

3.1 copyTable方法

copyTable也是属于HBase数据迁徙的器材之一,以表级别举办数据迁徙。copyTable的本质也是操作MapReduce举办同步的,与DistCp差异的时,它是操作MR去scan 原表的数据,然后把scan出来的数据写入到方针集群的表。这种方法也有许多范围,如一个表数据量到达T级,同时又在读写的环境下,全量scan表无疑会对集群机能造成影响。

(编辑:湖南网)

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

热点阅读