大数据01

MapReduce和Storm框架进行单词统计时的区别:

1)MapReduce是典型的批处理系统,Storm是流计算系统
在数据的采集阶段,流计算将数据暂存至消息队列中,批处理将消息采集进分布式文件系统中,在该环节并没有多大区别,然而数据的计算阶段,流数据采用在数据进入流计算系统时对数据进行运算,批处理将会攒一波数据,然后导入到计算系统中,就会有延时的区别。
(2)在数据的计算阶段,Storm的时延低是因为(1)Storm是常驻的,有(2)数据就可以进行实施的处理;MapReduce是攒一批数据以后启动系统任务(2)Storm计算每个单元之间数据的之间通过网络直接传输;MapReduce计算任务的结果要写入HDFS,是通过网络拖过去运算,相对来说是多了磁盘读写,比较慢。MapReduce由MR过程组成,有些的map是没有意义的。
(3)在数据的结果展示方面,Storm是将运算的结果直接反馈到结果集中,MapReduce一般是运算结束后将结果批量导入到结果集中。

Strom框架中的单词统计Topology定义如下,其中定义了两个Bolt,试述两个Bolt各自完成的功能,以及中间结果如何在两个Bolt之间传输

TopologyBuilder builder = new TopologyBuilder();
Builder.setSpout(“sentences”,new RandomSentenceSpout(),5);
builder.setBolt(“split”,new SolitSentence(),8)
.shuffleGrouping(“sentences”);
builder.setBolt(“cout”,new WordCount(),12)
.fieldsGrouping(“split”,new Fields(“word”));

Builder.setSpout()方法对数据源进行定义,第一个参数表示Stream的名称,第二个参数表示处理的具体函数,第三个参数表示的是并发数。Bolt中的builder.setBolt()与上面的Builder.setSpout()类似,同时每个Bolt使用了Groupings()系列方法定义了Tuple的发送方式。
在此问题中,第一个Bolt用于单词的分割,该Bolt中的任务随机接受Spout发送的句子,并从接受的句子中提取出单词;第二个Bolt接受第一个Bolt发送的Tuple并进行处理(Bolt是通过订阅Tuple的名称来进行接受相应的数据的,第一个Bolt声明其输出Stream的名称是“split”,而第二个Bolt声明其订阅的Stream为“split”,因此第二个可以接受到第一个的Tuple),即分割以后单词出现的次数。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值