Spark中job的划分

Spark中job的划分_第1张图片
当遇到了宽依赖就会产生一个新的阶段
Spark中job的划分_第2张图片
我们再多增加一条repartition(宽依赖)
Spark中job的划分_第3张图片
再次查看多了一个stage
Spark中job的划分_第4张图片
总结

job:
   一个应用中,每碰到一个action,就会起一个job
   一个应用可以有多个job
stage:
   阶段. 每碰到一个宽依赖就会在这个job内创建一个新的stage
   (如果遇到宽依赖的时候,用的分区器和当前一样,则不会起新的)
   一个job至少有一个阶段
   stage划分是从后向前划分,执行一定是从前往后
task
   体系了执行数据分析的并行度
   一个stage包含多个task
   task是一个线程,执行代码的最小单位
   线程的run方法内部会调用我们传递过去的那些匿名函数

拓展
DAG(Directed Acyclic Graph) 有向无环图
Spark 的顶层调度层使用 RDD 的依赖为每个 job 创建一个由 stages 组成的 DAG(有向无环图). 在 Spark API 中, 这被称作 DAG 调度器(DAG Scheduler).
我们已经注意到, 有些错误, 比如: 连接集群的错误, 配置参数错误, 启动一个 Spark job 的错误, 这些错误必须处理, 并且都表现为 DAG Scheduler 错误. 这是因为一个 Spark job 的执行是被 DAG 来处理.
DAG 为每个 job 构建一个 stages 组成的图表, 从而确定运行每个 task 的位置, 然后传递这些信息给 TaskSheduler. TaskSheduler 负责在集群中运行任务.

你可能感兴趣的:(spark)