Spark详解(十三):Spark Streaming 运行架构分析

1. 运行架构

SparkStreaming的主要功能包括流处理引擎的流数据接收与存储以及批处理作业的生成与管理,而Spark核心负责处理Spark Streaming发送过来的作用。Spark Streaming分为Driver端和Client端,运行在Driver端为Streaming Context实例。该实例包括DStreamGraph和JobScheduler(包括ReceiveTracker和JobGenerator)等,而Client包括ReceiveSupervisor和Receiver等。

SparkStreaming进行流数据处理大致上可以分为:启动流处理引擎,接受以及存储流数据、处理流数据和输出处理结果等4个步骤,其运行架构图如下所示:

在这里插入图片描述

(1)初始化StreamContext对象,在该对象启动过程中实例化DStreamGraph和JobScheduler。其中DStreamGraph用于存放DStream之间的依赖关系等信息,而JobScheduler包括ReceiverTracker和JobGenerator。其中ReceiverTracker为Driver端流数据接收器(Recevier)管理者,JobGenerator为批处理作业生成器。在ReceiverTracker启动过程中,根据流数据接收器分发策略通知对应的Executor的流数据接收器管理者(RecevierSupervisor)启动,再由RecevierSupervisor启动流数据接收器Recevier。

(2)当流数据接收器Recevier启动之后,持续不断地接受实时流数据,根据过来的数据的大小判断,如果数据量很小,则赞成多条数据成一块,然后再进行块存储;如果数据量大,则直接进行块存储。对于这些数据Recevier直接交给RecevierSupervisor,由其进行数据存储操作。块存储根据设置是否预写日志分为两种,一种是使用非预写日志BlockManagerBasedBlockHandler方法之间写到Worker内存或者磁盘中,另一种是进行预写日志WriteAheadLogBasedBlockHandler方法,即在预写日志同时把数据写入到Worker的内存或者磁盘中。数据存储完毕之后,RecevierSupervisor会把数据存储的元信息上报给RecevierTracker,RecevierTracker再把这些信息转发给RecevierBlockTracker中,由他负责管理收到的数据块元数据信息。

(3)在StreamingContext中的JobGenerator维护一个定时器,该定时器在批处理时间到来时会进行生成作业的操作。在该操作中进行如下操作:

  1. 通知RecevierTracker将接收到的数据进行提交,在提交时采用synchronized关键字进行处理,保证每条数据划入到一个且只有一个批次中。
  2. 要求DstreamGraph根据DStream依赖关系生成作业序列Seq[Job]
  3. 从第一步RecevierTracker中获取本次批次的元数据。

(4)把批处理时间、作业序列Seq[Job]和本批次的元数据包装成JobSet,调用JobScheduler.submitJobSet(JobSet)提交给JobScheduler,JobScheduler将这些作业发送给SparkCore进行处理,由于该执行为异步执行,因此本步执行速度非常快。

(5)只要提交结束(不管作业是否被执行),Spark Streaming对整个系统做一个检查点(Checkpoint)

(6)在SparkCore的作业对数据进行处理, 处理完毕之后输出到外部系统中,如数据库或文件系统,输出的数据可以被外部使用。由于实时流数据的数据源不断地流入,Spark会周期地进行数据处理,相应也会不断地产生输出结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark Streaming是基于Spark核心引擎的流处理框架,它将实时数据流分成小批次进行处理,每个批次都可以像RDD一样进行处理。Spark Streaming架构原理主要包括以下几个方面: 1. 数据源:Spark Streaming支持多种数据源,包括Kafka、Flume、Twitter、HDFS等,用户可以根据自己的需求选择合适的数据源。 2. 数据接收器:Spark Streaming通过数据接收器从数据源中获取数据,并将数据分成小批次进行处理。数据接收器可以是Spark自带的接收器,也可以是自定义的接收器。 3. 数据处理:Spark Streaming将每个批次的数据转换成RDD,然后通过Spark的转换操作进行处理。用户可以使用Spark提供的各种转换操作,如map、filter、reduce等。 4. 数据输出:Spark Streaming支持多种数据输出方式,包括HDFS、数据库、Kafka等。用户可以根据自己的需求选择合适的输出方式。 5. 容错性:Spark Streaming具有高度的容错性,它可以在节点故障或数据丢失的情况下自动恢复,并保证数据处理的准确性和完整性。 总之,Spark Streaming架构原理是基于Spark核心引擎的流处理框架,它通过数据源、数据接收器、数据处理和数据输出等组件实现实时数据流的处理和分析。 ### 回答2: Spark StreamingSpark的一种实时数据处理框架,它可以在Spark的强大计算引擎上,实现对实时数据流的高效处理和分析Spark Streaming架构原理包括以下几个部分: 1. 数据输入层:Spark Streaming的数据输入来源可以是各种数据源,例如Kafka、Flume、HDFS、socket等。在Spark Streaming中,输入的数据流被称为DStream(Discretized Stream),它是一系列连续的RDD(Resilient Distributed Datasets)。 2. 数据处理层:DStream作为Spark Streaming的基本数据结构,可以使用Spark强大的RDD操作函数进行处理。例如map、reduce、join等。Spark Streaming支持的RDD操作函数都可以被应用到DStream上,因此可以实现强大和灵活的数据处理和分析。 3. 数据输出层:在数据处理完成后,Spark Streaming提供了多种数据输出方式,例如将数据存储在HDFS、将数据发送到Kafka或Flume等消息系统、将数据推送到Web UI或Dashboards等。用户可以根据自己的需求选择合适的输出方式。 4. 容错性和可伸缩性:Spark Streaming具有良好的容错性和可伸缩性,它可以在集群中进行分布式计算和分布式存储,并保证数据计算和处理的完整性。 总的来说,Spark Streaming架构原理基于Spark强大的计算和分布式处理引擎,实现了对实时数据流的高效处理和分析。以应对大数据时代对实时业务处理和分析的需求。 ### 回答3: Spark Streaming架构原理是基于Spark的批处理引擎和Spark执行引擎基础上,实现了流式处理。其原理是将连续不断的数据流按照一定的时间间隔划分成批处理的数据流,将批数据流转化为RDD,再通过Spark执行引擎进行处理计算。 Spark Streaming架构包含以下组件: 1.数据输入源:包括数据输入流的来源,如Kafka、Flume、HDFS、Socket等。 2.输入DStream:对输入数据流进行封装,存储在内存中,以RDD形式进行处理。 3.数据处理引擎:处理包括数据转换、过滤、聚合等操作,使用Spark的高度并行化和内存计算能力。 4.处理结果输出:将处理结果输出到外部存储系统,如HDFS、数据库等。 在Spark Streaming的具体实现过程中,有以下三个重要的概念: 1.数据流窗口:指的是对输入的数据按照一定的时间间隔进行划分,把一段时间内的数据封装成一个小的包进行处理。可以设置窗口的大小和滑动间隔。 2.离散化流:将输入的数据流通过DStream划分成一系列的离散化的RDD,每个RDD包含窗口中一段时间内的数据。 3.转换操作:对离散化流中每个RDD进行转换操作,包括map、filter、reduce、join等操作,完成对数据流的处理。 在使用Spark Streaming架构进行数据流处理的时候,需要注意以下几点: 1.数据处理设计应该具备时效性和高可用性,尽可能减少延迟时间。 2.需要合理设置RDD缓存机制,避免数据丢失。 3.考虑到复杂的计算可能会使内存存储溢出,需要合理设置批处理的大小。 总的来说,Spark Streaming架构是一种基于Spark的流式数据处理框架。其实现原理是通过将流式数据划分为小的批处理进行离散化和转换,再结合Spark的高并发执行引擎实现对数据流的高速、时效性处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值