码迷,mamicode.com
首页 > 其他好文 > 详细

自己编写的spark代码执行流程

时间:2017-09-05 16:59:57      阅读:381      评论:0      收藏:0      [点我收藏+]

标签:otf   div   cti   color   等等   代码执行   序列化   个人   流程   

我们自己编写了spark代码后;放到集群中一执行,就会出现问题,没有序列化、指定的配置文件不存在、classnotfound等等。这其实很多时候就是因为我们对自己编写的spark代码执行流程的不熟悉导致的,源码阅读可以解决,但源码不是每个人都能看懂或能看进去的,下面我们就来讲一下,我们自己写的spark代码究竟是这么执行的。从执行的过程可分为三个部分来分析main方法,RDD处理方法,DStream处理方法,从执行的JVM虚拟机可以分为两个部分driver端,worker端
 
一、main方法
main方法就是在driver端执行的,当然这里是把RDD计算的Action剔除的情况,先看一段代码
技术分享
1、driver端
除了rdd计算action中的代码其他都是在driver端执行,并且只执行一次
 
2、worker端
DSUtil.dSopt()这里的带就是处理DSTream的,其中有一部分代码是driver一部分是Worker的,这里姑且认为是在worker端
 
二、DStream处理方法
在sparkStreaming中spark引入了DStream,实际上就是RDD的map集合(不是很精确),在处理的时候代码是:
技术分享
 
1、driver端
除了Dstram计算action中的代码其他都是在driver端并且只执行一次,
这里需要注意的是DStream的action方法(闭包)中的代码也不是全在worker端执行,只有在处理rdd时才会在Worker端执行,其他是在driver端执行的
与DStream的action方法外的代码区别是,这里是计算一次执行一次。
 
 
2、worker端
rdd的Action操作(闭包)中的代码都是在Worker端执行的
 
三、RDD处理方法
最后我们来看看RDD算子闭包在执行时代码如何执行
技术分享
 
1、driver端
挡在调用count方法处理rdd时,与rdd算子无关的代码都是计算一次执行一次
 
2、worker端
rdd的算子闭包是在driver端中执行的
 

自己编写的spark代码执行流程

标签:otf   div   cti   color   等等   代码执行   序列化   个人   流程   

原文地址:http://www.cnblogs.com/irich/p/7479164.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!