Hbase教程:经过BulkLoad快速将海量数据导入到Hbase

本文将针对这个问题介绍如何经过Hbase的BulkLoad方法来快速将海量数据导入到Hbase中。程序员

在第一次创建Hbase表的时候,咱们可能须要往里面一次性导入大量的初始化数据。咱们很天然地想到将数据一条条插入到Hbase中,或者经过MR方式等。可是这些方式不是慢就是在导入的过程的占用Region资源致使效率低下,因此很不适合一次性导入大量数据。本文将针对这个问题介绍如何经过Hbase的BulkLoad方法来快速将海量数据导入到Hbase中。面试

总的来讲,使用 Bulk Load 方式因为利用了 HBase 的数据信息是按照特定格式存储在 HDFS 里的这一特性,直接在 HDFS 中生成持久化的 HFile 数据格式文件,而后完成巨量数据快速入库的操做,配合 MapReduce 完成这样的操做,不占用 Region 资源,不会产生巨量的写入 I/O,因此须要较少的 CPU 和网络资源。Bulk Load 的实现原理是经过一个 MapReduce Job 来实现的,经过 Job 直接生成一个 HBase 的内部 HFile 格式文件,用来造成一个特殊的 HBase 数据表,而后直接将数据文件加载到运行的集群中。与使用HBase API相比,使用Bulkload导入数据占用更少的CPU和网络资源。数据库

实现原理网络

Bulkload过程主要包括三部分:app

一、从数据源(一般是文本文件或其余的数据库)提取数据并上传到HDFS。抽取数据到HDFS和Hbase并无关系,因此你们能够选用本身擅长的方式进行,本文就不介绍了。分布式

二、利用MapReduce做业处理实现准备的数据 。这一步须要一个MapReduce做业,而且大多数状况下还须要咱们本身编写Map函数,而Reduce函数不须要咱们考虑,由HBase提供。该做业须要使用rowkey(行键)做为输出Key;KeyValue、Put或者Delete做为输出Value。MapReduce做业须要使用HFileOutputFormat2来生成HBase数据文件。为了有效的导入数据,须要配置HFileOutputFormat2使得每个输出文件都在一个合适的区域中。为了达到这个目的,MapReduce做业会使用Hadoop的TotalOrderPartitioner类根据表的key值将输出分割开来。HFileOutputFormat2的方法configureIncrementalLoad()会自动的完成上面的工做。函数

三、告诉RegionServers数据的位置并导入数据。这一步是最简单的,一般须要使用LoadIncrementalHFiles(更为人所熟知是completebulkload工具),将文件在HDFS上的位置传递给它,它就会利用RegionServer将数据导入到相应的区域。欢迎加入大数据学习交流分享群: 658558542   一块儿吹水交流学习(☛点击便可加入群聊工具

整个过程图以下:oop

代码实现性能

上面咱们已经介绍了Hbase的BulkLoad方法的原理,咱们须要写个Mapper和驱动程序,实现以下:

使用MapReduce生成HFile文件

驱动程序

经过BlukLoad方式加载HFile文件

因为Hbase的BulkLoad方式是绕过了Write to WAL,Write to MemStore及Flush to disk的过程,因此并不能经过WAL来进行一些复制数据的操做。后面我将会再介绍如何经过Spark来使用Hbase的BulkLoad方式来初始化数据。

BulkLoad的使用案例

一、首次将原始数据集载入 HBase- 您的初始数据集可能很大,绕过 HBase 写入路径能够显著加速此进程。

二、递增负载 - 要按期加载新数据,请使用 BulkLoad 并按照本身的理想时间间隔分批次导入数据。这能够缓解延迟问题,而且有助于您实现服务级别协议 (SLA)。可是,压缩触发器就是 RegionServer 上的 HFile 数目。所以,频繁导入大量 HFile 可能会致使更频繁地发生大型压缩,从而对性能产生负面影响。您能够经过如下方法缓解此问题:调整压缩设置,确保不触发压缩便可存在的最大 HFile 文件数很高,并依赖于其余因素,如 Memstore 的大小 触发压缩。

三、数据须要源于其余位置 - 若是当前系统捕获了您想在 HBase 中包含的数据,且因业务缘由须要保持活动状态,您可从系统中将数据按期批量加载到 HBase 中,以即可以在不影响系统的前提下对其执行操做。

结语

感谢您的观看,若有不足之处,欢迎批评指正。

若是有对大数据感兴趣的小伙伴或者是从事大数据的老司机能够加群:

658558542    (☛点击便可加入群聊

里面整理了一大份学习资料,全都是些干货,包括大数据技术入门,海量数据高级分析语言,海量数据存储分布式存储,以及海量数据分析分布式计算等部分,送给每一位大数据小伙伴,这里不止是小白汇集地,还有大牛在线解答!欢迎初学和进阶中的小伙伴一块儿进群学习交流,共同进步!

最后祝福全部遇到瓶颈的大数据程序员们突破本身,祝福你们在日后的工做与面试中一切顺利。

相关文章
相关标签/搜索