标签:算数 font 合并 方法 lock SQ csdn 完成 基于
在运行job时,spark是一个stage一个stage执行的。先把任务分成stage,在任务提交阶段会把任务形成taskset,在执行任务。
spark的DAGScheduler根据RDD的ShuffleDependency来构建Stages:
每个ShuffleDependency会map到spark的job的一个stage,然后会导致一个shuffle过程。
这是由于shuffle过程可能需要完成以下过程:
shuffleManager是spark的shuffle系统的可插拔接口。ShuffleManager将会在driver和每个executor上的SparkEnv中进行创建。可以通过参数spark.shuffle.manager进行设置。
driver通过ShuffleManager来注册shuffle,并且executor通过它来读取和写入数据。
控制shuffle数据输出逻辑。
获取shuffle过程中用于ShuffleRDD的数据。
管理抽象的bucket和计算数据块之间的mapping过程。
sort-based的shuffle,会把输入的记录根据目标分区id(partition ids)进行排序。然后写入单个的map输出文件中。为了读取map的输出部分,Reducers获取此文件的连续区域 。当map输出的数据太大而内存无法存放时,输出的排序子集可以保存到磁盘,这些磁盘文件被合并后,生成最终的输出文件。
sort shuffle有两个不同的输出路径来产生map的输出文件:
标签:算数 font 合并 方法 lock SQ csdn 完成 基于
原文地址:https://www.cnblogs.com/itboys/p/9226658.html