整理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 中执行



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


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


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

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


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


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


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


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


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


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



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

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