spark作为流行的计算框架,下面是其运行流程图,以Cluster模式为例

1、通过spark-submit的方式提交作业,此时应用程序向master发送请求启动Driver程序
Driver程序负责对资源和任务的调度
2、Master在资源充足的Worker上启动一个Driver进程
这里需要注意是Master找到资源充足的Worker并向其发送消息有Worker启动Driver进程
3、当Driver启动后,Driver就开始调度任务,首先初始化SparkContext
在初始化SparkContext时会产生两个重要的对象,1个是DAGSchedule另一个是TaskSchedule
首先是TaskSchedule的实现类 TaskScheduleImpl 由它负责具体的任务调度 (当然不同的任务调度由不同的实现类实现,后续文章会有介绍)
DAGSchedule负责任务的逻辑调度和stage切分
最后还会开启一个jetty的web服务,端口默认是4040,向外提供作业的web服务
此时算是SparkContext初始化完成
4、当Spark上下文初始化完成后就需要去执行具体的job即我们写的Spark代码,此时Driver会向Master申请资源(在启动任务时填写的资源)
5、Ma