spark streaming是spark 核心API的拓展,是一个实时数据计算工具,具备高吞吐量、容错机制的特点,支持多种数据源获取数据,接受kafka、flume、HDFS等数据源的数据,通过处理之后,存储到HDFS、database等各种地方。
streamingstreaming和storm之间的区别:
1.streaming支持批处理数据、storm对数据一条一条处理,storm的实时性高于streaming;
2.streaming的吞吐量高于storm;
3、容错机制不同:storm是acker(ack/fail消息确认机制)确认机制确保一个tuple被完全处理,Spark Streaming是通过存储RDD转化逻辑进行容错,也就是如果数据从A数据集到B数据集计算错误了,由于存储的有A到B的计算逻辑,所以可以从A重新计算生成B。
运行原理:
spark streaming将接收到的实时数据流信息,按照一定的时间间隔,对数据进行划分,交给spark engine引擎进行处理,最终得到一批批的结果。每一批数据在spark内核对应一个RDD,一批RDD构成Dstream。
处理流程 Dstream对Dstream的操作都能够转变为对每个RDD的操作,这些操作构成一个DstreamGraph。
构建小数据片的DAG构建,对data进行切片处理
Dstream Graph的依赖关系是计算和处理结果有关的RDD。
架构和作业流程:
streaming由三个模块构成
master:记录Dtream的依赖关系,并负责调度以生成新的RDD,相当于AM的功能,优化代码
worker:从网络接受数据并存储到内存中,执行RDD算子
client:从kafka等接受数据
作业流程:从网络中获取数据(把数据切成片),同时传入Dstream Graph(代码逻辑),经过job scheduler 变为spark job,交给job manage处理,job manage把数据处理成任务队列进行处理,最终再通过spark scheduler发送到worker处理
网友评论