分享

这样的实时统计场景storm应该怎么用?

尘世随缘 发表于 2015-3-30 10:34:00 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 14 83807
需求:有一个项目类似QQ发送消息的,可以单发,群发。客户希望能实时看到消息发送量的折线图(按小时为单位)。目前数据存入的是hbase数据库,内部讨论有2种架构模式:
模式一:
  客户端发起按时间为单位去查询当前时间点前N个小时的每个 小时累计数据总量,然后输出的WEB界面绘制折线图
模式二:
  消息进入storm,strom实时统计结果spout发送数据,第一个bolt验证消息格式是否正常以及当前包会被解析为几个消息包,第二个bolt接收到消息后是入
库还是入内存?

目前我的疑问是:
如果使用了storm后,bolt的节点接收到数据后存入哪里?如果存入Hbase的话,和当前模式一样了,每条记录一个记录.如果是放在内存定时刷新到数据库的话,有没有这样的介绍?

求助!!

已有(14)人评论

跳转到指定楼层
bioger_hit 发表于 2015-3-30 11:08:05
你们当前使用的是什么模式。

storm是一个实时框架,在接受消息后,可以对消息实时处理,无论存在什么地方,都是一样的。
楼主可以在了解下ajax。
这样实时性会更强一些。
bolt接受消息就做相应的处理,个人认为存在什么地方无所谓。

可以先放到内存,做处理,这样快一些。
处理完毕,你可以放到hbase,或则其他数据库、文件都是可行的。
回复

使用道具 举报

尘世随缘 发表于 2015-3-30 11:44:09
现在的消息记录 全部存入hbase,比如我要显示1:00-11:00点之间,每个整点的消息总量,我在客户端需要执行的代码如下:
伪代码:
Map totalSendmap=new HashMap();
for(int i=0;i<11;i++){
scan.startRow(时间点);
scan.endRow(时间点)
int total=scan.query(条件);
totalSendmap.put(i,total);
}
这个结果输出到客户端,客户端通过AJAX调用结果绘图。

如果storm也是每个bolt分析了数据之后存入hbase,那么storm实时计算的优势提醒在哪里呢?这个我没想明白
回复

使用道具 举报

bioger_hit 发表于 2015-3-30 12:22:42
尘世随缘 发表于 2015-3-30 11:44
现在的消息记录 全部存入hbase,比如我要显示1:00-11:00点之间,每个整点的消息总量,我在客户端需要执行的 ...

storm实时是:
来一条消息,我就统计一下,然后显示出来,然后存入数据库或则文件
来一条,统计一下,然后显示出来,然后存入数据库或则文件

storm是这样的场景,而不是先存入数据库,在展示。当然如果非要存如数据库,在展示也是可以的。

因为实时体现在消息的实时处理。

楼主可以在了解下实时系统,



推荐:
Storm入门指南




回复

使用道具 举报

尘世随缘 发表于 2015-3-30 12:36:29
storm实时是:来一条,我统计下,关键这个统计结果是存入内存还是数据库?如果存入内存当机器宕机了,则统计的数据丢失了。如果存入数据库,比如一共发送了10万条消息,那么数据库里则存入了10万条记录了。
虽然storm不关注最终流的处理结果的存储方式,但是鉴于此类需求,消息入库?
回复

使用道具 举报

arsenduan 发表于 2015-3-30 12:41:28
尘世随缘 发表于 2015-3-30 12:36
storm实时是:来一条,我统计下,关键这个统计结果是存入内存还是数据库?如果存入内存当机器宕机了,则统 ...

消息失败了,storm也会重发,当然如果整个集群挂掉了,或则遇到自然灾害如地震,这是谁都没有办法的事情。推荐框架:
大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合



回复

使用道具 举报

尘世随缘 发表于 2015-3-30 12:54:24
回复

使用道具 举报

arsenduan 发表于 2015-3-30 13:34:12
尘世随缘 发表于 2015-3-30 12:54
看来storm的最终版本应该是:

1、实时分析:适合场景:日志清洗、PV信息记录等等,

可以这么理解
回复

使用道具 举报

云晓翼 发表于 2015-3-30 14:53:39
谢谢分享,好贴,楼楼好样的
回复

使用道具 举报

尘世随缘 发表于 2015-3-31 09:33:54
继续这个问题,还有个概念不是很理解,分组:Stream Grouping中的Global grouping,比如需要统计一本字典中storm这个单词出现的次数,spout每次发送一行,例如“the storm is very good,use storm ...”,程序中一共设置了3个bolt,功能如下:第一个bolt:根据空格拆分单词,然后发送到第二个bolt,发送方式采用字段分组(Fields grouping),
第二个bolt:负责统计单词的出现次数,此处的bolt里面的内容应该是:
the      1
storm  2
is        1
very    1
good   1
use     1
统计结束后发送到第3个bolt,合并统计采用 全局分组(Global grouping)
第三个bolt:全局合并每个bolt中单词出现的次数,并入库
以下是我的问题
1、按理解,storm流式计算的流程,那么第二个bolt只会收到个别单词,收到之后也会立刻流入到第3个bolt了,为什么能累加次数?
2、第3个bolt按全局分组,多长时间执行一次,频率多少?比如上文发送的一句话,是不是这个节点是并发调用第3个时候处理的。





回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条