RDD Stage生成
来源:互联网 发布:演唱会订票软件 编辑:程序博客网 时间:2024/06/05 11:11
Stage生成
Stage的调度是由DAGScheduler完成的。由RDD的有向无环图DAG切分出了Stage的有向无环图DAG。Stage的DAG通过最后执行的Stage为根进行广度优先遍历,遍历到最开始执行的Stage执行,如果提交的Stage仍有未完成的父母Stage,则Stage需要等待其父Stage执行完才能执行。同时DAGScheduler中还维持了几个重要的Key-Value集合结构,用来记录Stage的状态,这样能够避免过早执行和重复提交Stage。waitingStages中记录仍有未执行的父母Stage,防止过早执行。runningStages中保存正在执行的Stage,防止重复执行。failedStages中保存执行失败的Stage,需要重新执行,这里的设计是出于容错的考虑。
RDD DAG切分Stage的依据:调度器会计算RDD之间的依赖关系,将拥有持续窄依赖的RDD归并到同一个Stage中,而宽依赖则作为划分不同Stage的判断标准。
Stage分为两种:
ShuffleMapStage, in which case its tasks’ results are input for another stage
其实就是,非最终stage, 后面还有其他的stage, 所以它的输出一定是需要shuffle并作为后续的输入。
这种Stage是以Shuffle为输出边界,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出
其输出可以是另一个Stage的开始。
ShuffleMapStage的最后Task就是ShuffleMapTask。
在一个Job里可能有该类型的Stage,也可以能没有该类型Stage。
ResultStage, in which case its tasks directly compute the action that initiated a job (e.g. count(), save(), etc)
最终的stage, 没有输出, 而是直接产生结果或存储。
这种Stage是直接输出结果,其输入边界可以是从外部获取数据,也可以是另一个ShuffleMapStage的输出。
ResultStage的最后Task就是ResultTask,在一个Job里必定有该类型Stage。
一个Job含有一个或多个Stage,但至少含有一个ResultStage。
Stage类
stage的RDD参数只有一个RDD, final RDD, 而不是一系列的RDD。
因为在一个stage中的所有RDD都是map, partition不会有任何改变, 只是在data依次执行不同的map function所以对于TaskScheduler而言, 一个RDD的状况就可以代表这个stage。
Stage参数说明:val id: Int //Stage的序号数值越大,优先级越高val rdd: RDD[], //归属于本Stage的最后一个rddval numTasks: Int, //创建的Task数目,等于父RDD的输出Partition数目val shuffleDep: Option[ShuffleDependency[, , ]], //是否存在SuffleDependency,宽依赖val parents: List[Stage], //父Stage列表val jobId: Int //作业ID
- RDD Stage生成
- spark中生成stage的过程中,是如何得知某个rdd的缓存情况。
- rdd依赖关系、stage划分、stage任务执行揭秘
- Metasploit生成Stage shellcode
- 如何生成stage shellcode
- 【Spark】Stage生成和Stage源码浅析
- Dstream生成RDD实例详解
- DStream 生成 RDD 实例详解
- DStream 生成 RDD 实例详解
- How-to: controle tasks for each stage(partitions for each rdd)
- 小知识点源码解析-STAGE由最后一个RDD确定并行度的源码解析
- 小知识点实践——RDD 在STAGE 中计算时的PIPELINE测试
- Spark2.x学习笔记:11、RDD依赖关系与stage划分
- 1.2 DStream 生成 RDD 实例详解
- ######好好好#######DStream 生成 RDD 实例详解
- 关于FLEX生成的SWF设置stage.displayState的问题
- RDD
- RDD
- 驱动编写小经验(更新中......)
- Android x86 On Qemu
- 星宇专卖店POS收银软件管理系统 v2.49 官方版
- Android资源文件分类 res目录 assets目录
- 关于Mybatis 查询 查到空数据列的情况
- RDD Stage生成
- DuiLib界面库滚动条拖动注意事项
- 利用jws发布一个查询员工信息的Web服务(员工信息存储在数据库中)
- 线程与网络编程(第五节:UDP的扩展与双工通信)
- POSIX---linux多线程编程基础总结
- asp.net执行cmd命令
- 意念控制飞行器
- View的事件分发流程
- 51822代码篇4