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

网友投稿 888 2022-05-29

一、介绍

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中;

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

2.1    MR任务准备数据

MapReduce的执行过程分为Map端、Reduce端。Map函数输出的经过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实验样例如附件所示

附件: bulkload实验开源.docx 343.04KB 下载次数:4次

附件: bulkload实验_华为.docx 0B 下载次数:3次

EI企业智能 FusionInsight HBase

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用linux搭建单机elk环境
下一篇:java学习笔记——file类
相关文章