HBase BulkLoad原理以及流程

Bulkload的原理和流程
HBase底层存储是以HFile文件存储在磁盘上
1、根据HDFS的数据或者外部的数据生成HBase底层的数据格式HFile文件
2、根据生成目标HFile,利用HBase提供的Bulkload工具将HFile移动(或加载)到HBase目录下
bulkload流程图

bulkLoad主要是将数据编写成HFile的形式,批量加载到HBase中,具有优于其他数据提取机制的优点,此操作完全绕过写入路径
优缺点:
① 数据可以立即呗hbase使用,但是会对集群造成额外的负载和延迟
② BulkLoad操作不会预写日志(WALs),因此不会引起过量的flush和split
③ BulkLoad操作不会引起过多的垃圾回收(GC)

BulkLoad使用流程
一、从现有的数据源中提取数据,可以从关系型数据库中导出数据,如果是TSV/CSV形式的数据参见http://hbase.apache.org/book.html#importtsv.
二、将已导出的数据,处理成为HFile数据格式(hfile格式介绍:http://hbase.apache.org/book.html#_hfile_format_2),需要使用MR任务进行转换,并且数据是唯一的,通常需要我们自己编写Mapper
作业必须输出行键Key,以及一个KeyValue(一个put,delete作为value),Reducer由HBase进行处理,如果需要我们自己对数据进行处理,可以在MR任务中,以此流程Mapper->Reducer->Mapper编写,最周Reducer交由hbase处理

  • 检查表的配置信息,以及总的分区器排序
  • 将分区文件上传导集群中,并添加导 DistributedCache中
  • 设置一定数量的reduce任务数,匹配当前region数量
  • 设置输出的key/value类,匹配HFileOutputFormat
  • 设置Reducer适当的排序( KeyValueSortReducer或者 PutSortReducer)

三、在输出的文件夹中每个region创建一个HFile,输入的数据会被完全覆盖,一般情况下需要准备的磁盘大小至少是原始数据集大小的两倍,比如mysqldump出100G的数据,在以HFile上传到HDFS后,需要准备至少200G的存储空间
四、将文件加载至HBase中。使用LoadIncrementalHFiles命令,并向HDFS传入定位文件的URL,每个文件都加载到该区域的RegionServer上相关的region当中,可以通过传递限制输入的版本数量–version = N选项,在N重要包含最大版本数量
从就到新(最大时间戳到最小时间戳),如果在创建文件后,分割了一个region,则该工具会自动根据新边界进行切分HFile,效率相对较低

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值