整理spark中的job stage task几个概念以及运行案例

Job :

是一个比task 和 stage 更大的逻辑概念,job 可以认为是我们在driver 或是通过spark-submit 提交的程序中一个action ,在我们的程序中有很多action  所有也就对应很多的jobs


Stage:

 是spark 中一个非常重要的概念 ,在一个job 中划分stage 的一个重要依据是否有shuflle 发生 ,也就是是否会发生数据的重组 (重新组织数据)。在一个stage 内部会有很多的task 被执行,在同一个stage 中 所有的task 结束后才能根据DAG 依赖执行下一个stage 中的task.


在spark streaming中,一个application可以在时间维度上划分为无数个job, 一个job 有很多任务组成,每组任务可以任务是一个stage , 而Task 是spark 中另一个很重要的概念 ,

task 跟 partition  block 等概念紧密相连 ,task 是执行job 的逻辑单元 ,在task 会在每个executor 中的cpu core 中执行





下面是一个基于streaming实时计算的wordcount案例:


1. 首先基于yarn-cluster的模式 提交一个wordcount  application



2.   在sparkcontext配置中  Durations.seconds(1) 设置为1秒,因此相隔1秒的时间段内的RDD数据 作为计算对象 来触发一个action,也就是一个job




3.  在id 为4988的job中,根据wordcount的逻辑主要有两个stage 




4.   点击id为9977的 stage 即对应的foreach stage中,可以看到 该stage 由N个task来实际执行计算任务






版权声明:本文为博主原创文章,未经博主允许不得转载。

你可能感兴趣的:(Flink实时计算平台,Spark,分布式内存计算模型)