ITPub博客

首页 > IT职业 > IT生活 > Spark 运行时环境

Spark 运行时环境

IT生活 作者:ewen321 时间:2021-09-09 10:15:48 0 删除 编辑

Spark运行原理

图片描述

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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4325/viewspace-2819250/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-12

  • 博文量
    65
  • 访问量
    639