4、2 核心组件

1、Stage:虚的
    并行的task集合,同一Stage的所有任务有着相同的Shuffle依赖。
    阶段的划分按照shuffle标记来进行的。
    一个阶段含多个RDD,先有RDD后有Stage
    一个阶段含多个task
    stage通过ShuffleDependency划分,一个stage都是NarrowDependency
    阶段类型有两种,ShuffleMapStage和ResultStage。
    - ShuffleMapStage
        该阶段任务的结果是下一个阶段任务的输入。需要跟踪每个分区所在的节点。
        任务执行期间的中间过程,保存task的输出数据供下一个reduce进行fetch。
        该阶段可以单独提交。

    - ResultStage
        结果阶段直接执行rdd的action操作。
        对一些分区应用计算函数(不一定需要在所有分区进行计算,比如说first(),take(3))。

2、Task:运行在一个节点上,实的    
    一个task包含一个RDD整个的变换的过程
    从最后一个RDD的每个分区往前找他的依赖,就是它的任务;最后一个RDD的分区数就是该阶段的task数
    是spark执行单位,有两种类型。
    - ShuffelMapTask
        在ShuffleMapStage由多个ShuffleMapTask组成。

    - ResultTask
        ResultStage由多个ResultTask组成,结果任务直接task后,将结果回传给driver。

3、job
    一个action就是一个job

4、Application
    一个应用可含多个job。

猜你喜欢

转载自www.cnblogs.com/lybpy/p/9769913.html