分享

storm如何进行数据汇总呢?

ld512870 发表于 2015-10-24 10:56:29 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 15522
       最近在学习Storm。基本上的概念已经理解了,但是一直有一个疑问,关于Storm上的各个节点之间的数据交互:
      比如我有3台机器,用来充当计算节点。当我启动一个topology的时候,产生了三个spout来发射数据给bolt,但是这些spout和bolt并不是在同一个节点上,那么,节点1的spot是如何给节点2的bolt数据的呢?是通过stream grouping吗?那么如果是这样的话,那样会产生大量的网络传输,占用网络io,不会降低效率吗?没有数据本地化优势。还有一个问题就是,比如我要进行单词计数wordcount测试,那么,我最后一个bolt就是进行word的次数相加计算。 在mapreduce中。是通过reduce来进行汇总的。那么,在storm中是怎么实现的这个功能呢?因为我可能在不同机器产生好几个bolt,storm是如何把最终的结果进行汇总的呢?  求大神帮忙啊。

已有(2)人评论

跳转到指定楼层
arsenduan 发表于 2015-10-24 12:02:47
1.那么,节点1的spot是如何给节点2的bolt数据的呢?
通过storm的发射器
2.在storm中是怎么实现的这个功能呢?因为我可能在不同机器产生好几个bolt,storm是如何把最终的结果进行汇总的呢?  
storm也是分布式,但是他擅长的是在线,hadoop是擅长离线的。
strom的划分跟mapreduce的划分,在wordcount方面是有区别的。
比如storm的第一个bolt用来分隔句子,获取单词
第二个接受单词,用来统计计数

回复

使用道具 举报

邓立辉 发表于 2015-10-27 08:13:18
我也是新人,我的理解,很可能不对,不对的地方希望专家们指出

1.那么,节点1的spot是如何给节点2的bolt数据的呢?---通过netty走网络,会占用网络,我在自己验证的时候发现io会很高,但是没有磁盘操作,所以应该是网络占走了。
2.在storm中是怎么实现的这个功能呢?因为我可能在不同机器产生好几个bolt,storm是如何把最终的结果进行汇总的呢?----stream会被分成更细的betch,这些经过本地化处理后在提交聚合,计算量会小很多
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条