目 录
0 引言
通常 MapReduce 在写HBase时使用的是 TableOutputFormat 方式,在reduce中直接生成put对象写入HBase,该方式在大数据量写入时效率低下(HBase会block写入,频繁进行flush,split,compact等大量IO操作),并对HBase节点的稳定性造成一定的影响(GC时间过长,响应变慢,导致节点超时退出,并引起一系列连锁反应)。针对上述问题本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。
通过使用先生成HFile,然后利用BuckLoad到Hbase的方式来替代之前直接调用HTableOutputFormat的方法有如下的好处:
- (1)减小HBase集群插入数据的压力
- (2)提供了job的运行速度,降低了job的执行时间
- (3)使用HBase API相比,使用Bulkload导入数据占用更少的CPU和网络资源。
1 原理
按照