我们自己编写了spark代码后;放到集群中一执行,就会出现问题,没有序列化、指定的配置文件不存在、classnotfound等等。这其实很多时候就是因为我们对自己编写的spark代码执行流程的不熟悉导致的,源码阅读可以解决,但源码不是每个人都能看懂或能看进去的,下面我们就来讲一下,我们自己写的spark代码究竟是这么执行的。从执行的过程可分为三个部分来分析main方法,RDD处理方法,DStream处理方法,从执行的JVM虚拟机可以分为两个部分driver端,worker端
一、main方法
main方法就是在driver端执行的,当然这里是把RDD计算的Action剔除的情况,先看一段代码
1、driver端
除了rdd算子中的代码其他都是在driver端执行,并且只执行一次
2、worker端
DSUtil.dSopt()这里的带就是处理DSTream的,其中有一部分代码是driver一部分是Worker的,这里姑且认为是在worker端