立即注册 登录
About云-梭伦科技 返回首页

pig2的个人空间 https://www.aboutyun.com/?61 [收藏] [复制] [分享] [RSS]

日志

discuz论坛apache日志hadoop大数据项目:hbase、hive数据加载思路分析

已有 717 次阅读2014-8-3 12:21 | discuz

hbase与hive实现about云分析discuz论坛apache日志hadoop大数据项目思路有很多:
目标:
实现数据能否同时注入hbase与hive

实现方式:

1.hbase通过BulkLoad加载、hive使用创建外部表的方式
2.hbase通过TableOutputFormat 方式、在reduce中直接生成put对象写入HBase,于此同时hive亦能查询数据,详细参考
about云分析discuz论坛apache日志hadoop大数据项目:hive与hbase是如何整合使用的


思路分析:
通常 MapReduce 在写HBase时使用的是 TableOutputFormat 方式,在reduce中直接生成put对象写入HBase,该方式在大数据量写入时效率低下(HBase会block写入,频繁进行flush,split,compact等大量IO操作),并对HBase节点的稳定性造成一定的影响(GC时间过长,响应变慢,导致节点超时退出,并引起一系列连锁反应),而HBase支持 bulk load 的入库方式,它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对HBase节点的写入压力。


通过使用先生成HFile,然后再BulkLoad到Hbase的方式来替代之前直接调用HTableOutputFormat的方法有如下的好处:
(1)消除了对HBase集群的插入压力
(2)提高了Job的运行速度,降低了Job的执行时间

目前此种方式仅仅适用于只有一个列族的情况,在新版 HBase 中,单列族的限制会消除。

bulkload 流程与实践
bulkload 方式需要两个Job配合完成: 
(1)第一个Job还是运行原来业务处理逻辑,处理的结果不直接调用HTableOutputFormat写入到HBase,而是先写入到HDFS上的一个中间目录下(如 middata) 
(2)第二个Job以第一个Job的输出(middata)做为输入,然后将其格式化HBase的底层存储文件HFile 
(3)调用BulkLoad将第二个Job生成的HFile导入到对应的HBase表中

总结
对于大数据来讲bulkload的方式,然后采用hive外部表的方式,这样方式应该更合适大数据项目。比如百度、新浪等这些必须使用这种方式,但是面对一些中小网站,可以采用第二种方式。
我们采用其中一种方式来实现。






1、Hbase几种数据入库(load)方式比较

http://www.aboutyun.com/thread-8601-1-1.html

2、MapReduce生成HFile入库到HBase及源码分析

http://www.aboutyun.com/thread-8600-1-1.html

3、MapReduce生成HFile入库到HBase
http://www.aboutyun.com/thread-8602-1-1.html

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条