前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SparkStreaming源码阅读思路

SparkStreaming源码阅读思路

作者头像
Spark学习技巧
发布2018-06-22 11:38:44
5310
发布2018-06-22 11:38:44
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

SparkStreaming的DirectAPI源码阅读思路

Spark Streaming的流式处理,尤其和kafka的集合,应该是企业应用的关键技术点,作为spark学习和工作者,要熟练的掌握其中原理,精读源码,才能更好的完成任务和相关工调优工作内容。对其原理简介,浪尖不啰嗦,请看前面的文章《聊聊流式批处理》。在这里浪尖主要介绍,Spark Streaming源码阅读时的注意事项及关注点,只有牢牢把握这几点,才能更好的使用Spark Streaming。

阅读源码谨记的点

对于SparkStreaming的相关操作呢,我们只需要谨记一下几点:

1,我们的输入输出流是如何注册到DStreamGraph,并生成job的。

输入流是在构建输入流对象的时候由InputDStream这个抽象类里面的ssc.graph.addInputStream(this),将其加入到我们DStreamGraph里面。

输出流是在构建的时候调用register方法来将其自身加入到DStreamGraph

2,sparkStreaming是如何封装我们的函数的。

我们自定义的函数最终会被封装到流的compute函数里调用。

3,我们的调用关系链也即pipeline怎么产生的。

4,我们的job生成的周期是由哪些参数决定的。

(time - zeroTime).isMultipleOf(slideDuration)

slideDuration 和 batchDuration 这两个变量有什么关系呢?

5,slideDuration //尤其是窗口函数。

slideDuration 在我们创建输入流的时候被初始化为batchDuration

没有window操作的话,由InputStream衍生出来的流,都会以 slideDuration: Duration = parent.slideDuration这种方式去继承,父流的slideDuration。

这个操作由window操作打乱,在window操作中被赋值为我们为window操作设置的滑动窗口,由此将我们的rdd生成周期改为了我们设定的滑动窗口,以及SparkStreamingjob 的生成周期是我们的滑动窗口指定的时间。

6,基于Receiver的方式,Receiver是如何被调度执行的?

重点细节

其实,针对spark Streaming的任务,我们可以简单将其分为两个步骤:

1, RDD的生成。就拿与kafka结合的步骤来看,有两种RDD的生成策略。第一种就是基于Receiver的方式,生成blockRDD,这个我们在知识星球里面详细讲了。然后就是direct API的格式是生成KafkaRDD,这个RDD是和kakfa消费的分区数一一对应。Kafka产生的基本思路是,针对获取到分区,然后计算要消费的偏移,然后将这些分装成分区信息,那么在compute函数力计算的时候,会使用simpleConsumer针对分区和偏移信息,去kafka里面获取数据。

2, Job的生成及执行。

Job生成是按照批处理时间,但是由于窗口函数的存在,会导致job生成是批处理时间的若干倍。这个在视频里会详细讲的。

最终是在jobScheduler里面,遍历job,然后提交到一个固定线程数的线程池里。这个线程数实际上默认是1,我们可以通过spark.streaming.concurrentJobs设置,结合调度模式,来实现并发job调度。

private val jobExecutor =

ThreadUtils.newDaemonFixedThreadPool(numConcurrentJobs, "streaming-job-executor")

要记住上述1,2两个点,再结合开头的六个问题,就能很清楚的搞明白Spark Streaming运行原理及与kafka结合的两种模式的区别,最终可以完成更精致开发和调优。

kafkaRDD生成及获取数据的结构图

job生成及调度的过程

详细源码视频,请加入星球获取。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档