继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spark 运行时环境

撒科打诨
关注TA
已关注
手记 265
粉丝 45
获赞 144

Spark运行原理

webp

Spark运行原理

构建应用程序运行时

首先根据应用程序资源需求构建一个运行时环境,通过与资源管理器交互来完成,通常存在两种方式:
粗粒度,应用程序在提交之后,正式运行之前根据程序资源需求一次性获取资源,整个运行过程不再申请新的资源
细粒度,应用程序在提交之后,动态向集群申请资源,只要等资源满足一个任务的运行就开始执行,基于Hadoop的MR就是基于细粒度运行时构建

对于Spark on YARN,目前支持粗力度

应用程序转换成DAG

根据宽依赖和窄依赖拆分Stage,将应用程序转换成DAG

首先,从数据混洗的角度,窄依赖RDD可以通过相同键进行联合分区,整个操作可以在同一个节点上流水线式运行,不会造成网络间数据传输
其次,从失败恢复的角度,窄依赖的失败只需要重新计算丢失的RDD的父分区,并且可以在不同节点并行计算。宽依赖会设计多个父RDD分区的重新计算

首先将DAG划分成一个完整的Stage,从最后一个RDD往前回溯,不断判断RDD的依赖关系,如果是窄依赖则继续回溯,宽依赖则划分出一个新的Stage

调度执行DAG

DAGScheduler按照依赖关系调度执行每个Stage,优先选择不依赖任何阶段的Stage。执行Stage阶段启动一定数目的Task并行执行

Spark的优化机制(借鉴MapReduce)
数据本地性,对任务进行调度时,为算子选择节点,优先选择数据所在节点,其次选择数据所在机架节点,最后选择其他机架节点。
推测执行,检查到同类任务存在明显比较慢的任务时,尝试为慢任务启动备份任务,先完成的结果作为最终结果。
多线程执行具体的任务,减少多进程任务的启动开销
Executor上有一个BlockManager存储模块,当需要多轮迭代时,将中间过程的数据进行存储,后续需要时直接读取存储数据。



作者:Alex90
链接:https://www.jianshu.com/p/5fdfbbe417d8

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP