Spark Streaming是构建在Spark上的实时计算框架,扩展了Spark流式大数据处理能力。Spark Streaming将数据流以时间片为单位进行分割形成RDD,使用RDD操作处理每一块数据,每块数据(也就是RDD)都会生成一个Spark Job进行处理,最终以批处理的方式处理每个时间片的数据。
Spark Streaming架构
通过图3-11,读者可以对Spark Streaming的整体架构有宏观把握。
图3-11:Spark Streaming架构图
组件介绍:
q Network InputTracker: 通过接收器接收流数据,并将流数据映射为输入DStream。
q Job Scheduler:周期性地查询DStream图,通过输入的流数据生成Spark Job,将Spark Job提交给Job Manager进行执行。
q JobManager:维护一个Job队列,将队列中的Job提交到Spark进行执行。
通过图3-11可以看到.D-Stream Lineage Graph进行整体的流数据的DAG图调度,Taskscheduler负责具体的任务分发,Block tracker进行块管理。在从节点,如果是通过网络输入的流数据会将数据存储两份进行容错。Input receiver源源不断的接收输入流,Task execution负责执行主节点分发的任务,Block manager负责块管理。Spark Streaming整体架构和Spark很相近,很多思想是可以迁移理解的。
Spark Streaming优势及特点
1)多范式数据分析管道:能和Spark生态系统其他组件融合,实现交互查询和机器学习等多范式组合处理。
2)扩展性:可以运行在100个节点以上的集群,延迟可以控制在秒级。
3)容错性:使用Spark的Lineage及内存维护两份数据进行备份达到容错。RDD通过Lineage记录下之前的操作,如果某节点在运行时故障,则可以通过冗余备份数据在其他节点重新计算得到。
友情推荐:ABC技术研习社
为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。