分享

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

pig2 发表于 2014-8-2 12:06:48 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 18706
本帖最后由 pig2 于 2014-8-2 17:25 编辑

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




已有(2)人评论

跳转到指定楼层
雷夫23 发表于 2016-8-21 22:01:15
学习学习,感觉很有技术范儿
回复

使用道具 举报

ggggying12 发表于 2017-2-23 15:52:38
非常感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条