HBase使用最佳实践-HBase Bulkload原理介绍

举报
FI小粉丝 发表于 2021/06/24 10:19:47 2021/06/24
【摘要】 一、介绍HBase有多种方式把数据load进去,最直接的方式是通过HBase Client API逐条写入,或通过MapReduce调用TableOutputFormat方法写入,但它们都不是最有效的方式。HBase还提供了另一种比较有效的加载数据方式:ImportTsv工具将数据转换成HBase内部的组织格式输出成HFile文件;completebulkload工具将ImportTsv生成...

一、介绍

HBase有多种方式把数据load进去,最直接的方式是通过HBase Client API逐条写入,或通过MapReduce调用TableOutputFormat方法写入,但它们都不是最有效的方式。HBase还提供了另一种比较有效的加载数据方式:ImportTsv工具将数据转换成HBase内部的组织格式输出成HFile文件;completebulkload工具将ImportTsv生成的文件直接加载到HBase集群内。使用BulkLoad 将会比使用简单HBase API方式占用更少的CPU和网络资源。

2.HBase BulkLoad原理

HBase BulkLoad包含两个主要步骤:

  • 通过MapReduce任务来准备数据;
  • 将数据加载到HBase中;

2.1    MR任务准备数据

MapReduce的执行过程分为Map端、Reduce端。Map函数输出的<key,value>经过partitioner已经确定了Reducer,所有这些信息在Map端将写入到本地磁盘上;Reducer端通过Fetcher不断从已完成的map上获取本Reducer相关的数据,所有获取的数据将合并在一起然后再交由Reducer函数处理,最终结果在Reducer端输出。

HBase BulkLoad也需要经过Map端和Reduce端。其中Map端主要完成数据转换,根据内部算法将输入文件进行拆分,每个拆分会对应一个Map任务来进行处理;每个Map任务按行读取文件的内容,将每行数据转换为HBase相关对象,最终保存在本地文件系统。

Reduce端主要是读取本地文件系统,然后按照HBase底层的HFile文件格式生产相应文件,并保存在HDFS目录。

2.2      加载数据

通过MapReduce程序生产了HFile文件,但是并没有导入HBase中。这时需要通过completebulkload工具,将生产的HFile文件导入已经运行的HBase中,从而客户可以通过HBase获取到相关数据。

大体上分为两个阶段:

  • 扫描出HDFS上的待导入的HFile
  • 针对每个HFile,加载到制定的HBase Region对应的数据目录中。

三. bulkload实验样例如附件所示

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。