spark stream和storm的对比

使用范围比较:吞吐量对比:Storm以数据记录为最小单位进行处理和容错。由于单挑记录处理的成本较高,spark streaming首先将数据切分成一定时间范围内Duration的数据集,然后积累一批(batch)Duration数据集后单独启动一个任务线程处理。这种方式大大提供了spark streamming流式计算处理的吞吐量。

容错比较。由于storm用于传统关系型数据库类得的以数据记录为单位容错,所以一条条数据恢复显然很慢。而spark streamming借助于spark核心提供了从DAG重新调度任务和并行,能快速的完成数据从故障中的恢复工作。

spark streamming 流式计算执行过程分析

《spark stream和storm的对比》

Receiver:spark streaming 内置的输入流接受器或者用户自定义的接收器,用于从数据源接受源源不断的数据流

currentBuffer用于缓存输入流接收器接收的数据流。

blockIntevalItimer:一个定时器,用于将CurrentBuffer中缓存的数据封装为Block后放入blocksForPublishing

blocksForPushing:用于缓存将要使用的Block

blockPushingThread:此线程每隔100毫秒从blocksForPushing中取出一个Block存入存储体系,并缓存到ReceivedBlockQueue。

Block Batch :Block 批次,按照批次时间间隔,从ReceivedBlockQueue中获取一批block。

JobGenerator:Job生成器,用于给每一批Block生成一个job

ssc.sparkContext.makeRDD(1 to 50,50).map(x=>(x,1)).reduceByKey(_+_,20).collection这条语句通过运行重复的作业来确保所有的slave都已经注册 ,避免所有的receivers都在一个节点上

    原文作者:snail_knight
    原文地址: https://www.jianshu.com/p/6bba513531d2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞