SparkStreaming — 架构原理分析

Spark Streaming运行原理

  首先我们看一下Spark Streaming的运行流程,和之前Spark Core一样都是先创建Context,这里创建的是StreamingContext。Spark Streaming的启动和Spark Core不一样,它是调用StreamingContext.start()方法来启动,但是触发执行RDD算子也是一样的需要action操作,下面就先看一下整个运行流程:
Spark Streaming运行流程
  上就是Spark Streaming的运行流程,首先创建StreamingContext,在初始化的时候会先创建两个重要的组件DStreamGraph和JobScheduler,而在start()方法中创建了其他两个重要组件JobGenerator和ReceiverTracker,下面具体分析一下每个组件在整个工作流程中的作用。
  这里先说一下DStreamGraph的功能,它和DAGScheduler的功能类似,它负责记录每个DStream直接的状态关系(依赖关系);
  在start()方法调用之后,Driver节点开始去Spark集群上的某个Executor上启动输入DStream(JavaReceiverDStream)的Receiver;
  接着worker节点的Executor上的Receiver接收到数据之后,就会先将数据保存到Executor对应的BlockManager中,接着会发送一份数据信息到StreamingContext的ReceiverTracker中;
  接着JobGenerator会就根据我们定义的batch间隔去ReceiverTracker中获取一次时间间隔内的数据,将其封装为一个RDD(batch interval时间间隔的数据对应一个RDD)。它就会根据DStreamGraph定义的算子和各个DStream之间的依赖关系,去生成一个Job,Job的初始RDD就是刚才创建的batch对应的 RDD,然后提交给JobScheduler;
  JobScheduler的任务就是负责提交Job,Job的提交流程就和之前Spark Core里面的提交流程是一样的。
  上面就是Spark Streaming的基本运行流程,我们从Spark Streaming层面分析了各个组件在整个运行过程中的作用,其实底层依然是基于Spark Core Engine来运行的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值