Spark 之 Stage划分、数据本地性算法实现
来源:互联网 发布:lnmp php日志 编辑:程序博客网 时间:2024/05/17 01:49
Spark 之 Stage划分、数据本地性算法实现
[ 睡着的水-hzjs-2016.08.22 ]
一、Stage划分算法
---1、Spark Application 中可以因为不同的Action触发众多的Job,也就是说一个Application 中可以有很多的Job,每个Job是有一个还或者多个Stage构成的,后面的Stage依赖前面的Stage,也就是说只有前面依赖的Stage计算完毕后,后面的Stage才会运行;
---2、Stage划分的已经就是宽依赖,什么产生宽依赖呢?例如:reduceByKey、groupByKey等等;
---3、由Action(例如collect)导致了SparkContext.runJob的执行。最终导致了DAGScheduler中的submitJob的执行,其核心是通过发送一个case class JobSubbmitted 对象给eventProcessLoop,其中JobSubmitted 源代码如下:
##eventProcessLoop是DAGSchedulerEventProcessLoop的具体实例,而DAGSchedulerEventProcessLoop是EventLoop的子类,具体实现EventLoop的onReceive 方法。onReceive方法转过来回调doOnReceive。
---4、在doOnReceive中通过模式匹配的方式执行路由到
-----5、在handleJobSubmitted 中首先创建finalStage会建立父Stage的依赖链条;
补充:所谓的missing 就是要要进行当前的计算了!
二、Task 任务本地性算法实现
---1、在submitMissingTasks 中会通过调用以下代码获得任务的本地性:
2、具体一个Partition 中数据本地性的算法实现为下属代码:
---#在具体算法实现的时候首先查询DAGScheduler的内存数据结构是否存在当前Partition的数据本地性的信息,如果有的话,则直接返回;如果没有,首先会调用rdd.getPreferedLocations;
---#例如想让spark运行在Hbase上或者一种现在还没有直接支持的数据库上面,此时开发者需要自定义RDD,为了保证Task计算的数据本地性,最为关键的方式是必须实现RDD的getPreferedLocations;
3、DAGScheduler计算数据本地性的时候巧妙的借助了RDD自身的getPreferedLocations中的数据,最大化的优化的效率,因为getPreferedLocations 中表明了每个Partition的数据本地性,虽然当前Partition可能被缓存,但是缓存默认星狂下肯定是和getPreferedLocations 中的Partition 的数据本地性是一致的,所以这就极大的简化Task 数据本地性算法和效率的优化。
- Spark 之 Stage划分、数据本地性算法实现
- Spark DAG之划分Stage
- Spark源码分析之三:Stage划分
- Spark Stage 的划分
- spark如何划分stage
- Spark Stage的划分
- Spark的Stage划分和task最佳位置算法
- Spark学习之7:Job触发及Stage划分
- Spark源码解读之Stage划分和提交
- spark源码之Job执行(1)stage划分与提交
- spark源码之Job执行(1)stage划分与提交
- Spark源码分析之DAGScheduler以及stage的划分
- spark 中如何划分stage?
- spark中Stage的划分
- Spark修炼之道(高级篇)——Spark源码阅读:第四节 Stage划分
- [Spark源码剖析] DAGScheduler划分stage
- Spark进阶学习——Stage划分
- spark stage的划分和task分配
- 同一个ImageView显示不同的图片--->level-list
- 从A33移植ICM20608D谈Android sensors移植
- RasEditPhonebookEntry
- 【AlexNet】模型训练与测试导读
- 【华为练习题 】 n位水仙花数(初级)
- Spark 之 Stage划分、数据本地性算法实现
- 工作的核心
- HDU 2066 SPFA/起点集与终点集
- Centos7中安装中文输入法
- epoll的两种触发模式
- CodeForces 707D Persistent Bookcase (操作建树DFS|主席树+主席树)
- 高逼格"程序员"产品-奇点v1.10新版本上线
- fatal: --author '' is not 'Name <email>' and matches no existing author
- 数字化工厂解决方案——OA办公自动化与ERP