分享

storm如何从hbase读取数据呢?

123_listen 发表于 2015-5-7 11:48:56 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 25559
请教各位大神:我想从hbase里读取数据,在storm里进行处理,怎么破?

已有(4)人评论

跳转到指定楼层
Alkaloid0515 发表于 2015-5-7 12:21:36
首先楼主会使用Java读取hbase。
如果不会,参考
hbase编程:Java API连接Hbase进行增删改查讲解实例

会了这个之后,把这段代码,放入到storm的spout或则bolt中即可
回复

使用道具 举报

bob007 发表于 2015-5-7 12:24:52



下面有一个Storm-HBase开源的项目,可以参考:


一个GitHub项目:Storm-HBase,该项目是Twitter StormApache HBase的结合,它使用HBase cluster作为Storm的Spout数据源,目前只是初步实现,后续会进一步完善。

HBaseSpout根据时间戳范围[start_timestamp, stop_timestamp],持续不间断地从HBase cluster读取流数据:
  • 如果start_timestamp = 0,HBaseSpout将默认从3分钟前的数据开始读取并发送到Storm cluster;否则从用户指定的start_timestamp开始读取数据。
  • 如果stop_timestamp = 0, HBaseSpout将默认读取到当前时间的数据,并随着时间流动持续地读取新的数据并发送到Storm cluster;否则读取到用户指定的stop_timestamp后停止读取。
以上有关[start_timestamp, stop_timestamp]的设计,是为了适应不同的运行模式:
  • 最典型情况下,start_timestamp = 0 and stop_timestamp = 0,则从3分钟前开始读取发送数据,然后会同步扫描HBase cluster中的新数据,并发送给Storm cluster,适合用户实时计算的情景。
  • 出现问题的情况下,例如Storm cluster重启,计算任务状态被丢失,此时可能需要能够Spout进行数据的回传(data rewind),通过指定[start_timestamp, stop_timestamp]可以满足这一需求。
Storm-HBase力求尽可能做到通用化,因此提取了Storm和HBase的配置信息。有关Storm-HBase的配置选项,可以在GitHub工程的src/main/resources/storm.properties以及src/main/resources/hbase.properties文件中找到。如果你的HBase表的Schema结构与上述类似,那么只需要进行简单的配置即可使用Storm-HBase。

目前的HBaseSpout实现基于以下假设:
  • HBase表的rowkey形式为[shardingkey, timestamp, ...];
  • shardingkey占据第1个byte,表示表中数据的分区数,一般是100以内,所以这里使用了short类型存储;
  • timestamp占据第2~5个byte,表示数据中的时间戳信息,这里timestamp是秒级的UNIX时间戳值,使用了int型存储。
更多关于Storm-HBase的介绍及进展,请参加项目的GitHub链接:https://github.com/ypf412/storm-hbase



回复

使用道具 举报

123_listen 发表于 2015-5-14 10:08:24
Alkaloid0515 发表于 2015-5-7 12:21
首先楼主会使用Java读取hbase。
如果不会,参考
hbase编程:Java API连接Hbase进行增删改查讲解实例

谢谢您的回答,我现在就是用这个方法实现的。请问用这种方法实现和用storm源码里自带的storm-hbase接口实现两者的效率差不多吗?
回复

使用道具 举报

123_listen 发表于 2015-5-14 10:14:42
bob007 发表于 2015-5-7 12:24
下面有一个Storm-HBase开源的项目,可以参考:

你有修改过该项目里面的例子吗?有的话,能否分享下,谢谢啦
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条