HBase数据迁移方案介绍
副问题[/!--empirenews.page--]
一、媒介 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参数情势如下:
假如是独立的MR集群来执行distcp,由于数据量很大,一样平常是按region目次粒度来传输,同时传输到方针集群时,我们先把文件传到姑且目次,最后再目标集群上load表,我们用到的情势如下:
在这个进程中,必要留意源端集群到目标端集群计策是通的,同时hadoop/hbase版本也要留意是否同等,假如版本纷歧致,最终load表时会报错。 2.2 方案实验 迁徙要领如下: 第一步,假如是迁徙及时写的表,最好是遏制集群对表的写入,迁徙汗青表的话就不消了,此处举例表名为test; 第二步, flush表, 打开HBase Shell客户端,执行如下呼吁:
第三步,拷贝表文件到目标路径,搜查源集群到方针集群计策、版本等,确认没题目后,执行如上带MR参数的呼吁 第四步, 搜查方针集群表是否存在,假如不存在必要建设与原集群沟通的表布局 第五步,在方针集群上,Load表到线上,在官方Load是执行如下呼吁:
对付我们来说,因我们先把文件同步到了姑且目次,并不在原表目次,以是我们回收的另一种情势的load,即以region的维度来Load数据到线上表,怎么做呢,这里用到的是org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles这个类,即以bulkload的情势来load数据。上面同步时我们将文件同步到了目标集群的/tmp/region-hdfs-path目次,那么我们在Load时,可以用如下呼吁来Load region文件:
这里还用到一个参数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表无疑会对集群机能造成影响。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |