Spark运行时的基本工作流程如下:

  • (1)任何spark应用程序都包含driver代码和executor代码。spark应用程序首先在driver初始化SparkContext。因为SparkContext是spark应用程序通往集群的唯一路径,在SparkContext中包含了DAGScheduler和TaskScheduler两个调度器类。在创建SparkContext对象的同时也自动创建了这两个类。
  • (2)SparkContext初始化完成以后,首先根据Spark的相关配置,向Cluster Manager申请所需资源,然后在各个Worker节点初始化相应的Executor。Executor初始化完成以后,Driver将通过对Spark应用程序中的RDD进行解析,生成相应的RDD graph,该图描述了RDD之间的依赖关系。
  • (3)RDD图构建完毕以后,Driver将提交给DAGScheduler进行解析。DAGScheduler在解析RDD图的过程中,当遇到Action算子的时候将进行逆向解析,根据RDD之间的依赖关系以及是否存在Shuffle等,将Job解析成一系列具有先后依赖关系的Stage。
  • (4)DAGScheduler将划分的一系列的Stage按照先后顺序依次提交给底层的调度器TaskScheduler去执行。
  • (5)TaskScheduler接收到来自DAGScheduler的stage以后,将会在集群环境中构建一个TaskSetManager实例来管理Stage(TaskSet)的生命周期。
  • (6)TaskSetManager将会将相关的计算代码、数据资源文件等发送到相应的Executor上,并在相应的Executor上启动线程池执行。TaskSetManager在执行的过程之中,使用了一些优化的算法,用于提高执行的效率,譬如根据数据本地性决定每个Task的最佳位置、推测执行碰到Straggle任务需要放到别的结点上重试、出现Shuffle输出数据丢失时要报告fetch failed错误等机制。
  • (7)在Task的执行过程中,可能有部分应用程序涉及到I/O的输入输出,在每个Executor由相应的BlockManager进行管理,相关BlockManager的信息将会与Driver中的Block tracker进行交互和同步。
  • (8)在Task Threads执行的过程中,如果存在运行错误、或其他影响的问题导致失败,TaskSetManager将会默认尝试3次,尝试均失败以后将上报TaskScheduler,TaskScheduler如果解决不了,再上报DAGScheduler,DAGScheduler将根据各个Worker节点 的运行情况重新提交到别的Executor中执行。
  • (9)Task Threads执行完成以后,将把执行的结果反馈给TaskSetManager,TaskSetManager反馈给TaskScheduler,TaskScheduler反馈给DAGScheduler,DAGScheduler将根据是否还存在待执行的Stage,将继续循环迭代提交给TaskScheduler去执行。
  • (10)待所有的Stage都执行完成以后,将会最终达到应用程序的目标,或者输出到文件、或者在屏幕上显示等,Driver的本次运行过程结束,等待用户的其他指令或者关闭。
  • (11)在用户显式关闭SparkContext后,整个运行过程结束,相应的资源被释放或回收。
    从以上工作流可以看出,所有的Spark程序都离不开SparkContext和Executor两部分,每个Spark应用都有自己的Executor进程,此进程的生命周期和整个Application的生命周期相同,此进程内部维持着多个线程来并行地执行分配给他的Task。这种运行形式有利于不同的Application之间的资源调度隔离,但也意味着不同的Application之间难以做到相互通信和信息交换。同时需要注意由于Driver负责所有的任务调度,所以他应该尽可能地靠近worker结点。如果能在一个网络环境中那就更好了、

Spark的基本工作流程相关推荐

  1. Spark SQL架构工作原理及流程解析

    Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析.逻辑执行计划翻译.执行计划优化等逻辑. Sp ...

  2. GPU—加速数据科学工作流程

    GPU-加速数据科学工作流程 GPU-ACCELERATE YOUR DATA SCIENCE WORKFLOWS 传统上,数据科学工作流程是缓慢而繁琐的,依赖于cpu来加载.过滤和操作数据,训练和部 ...

  3. Yarn框架和工作流程研究

    一.概述     将公司集群升级到Yarn已经有一段时间,自己也对Yarn也研究了一段时间,现在开始记录一下自己在研究Yarn过程中的一些笔记.这篇blog主要主要从大体上说说Yarn的基本架构以及其 ...

  4. yarn的组成部分_Yarn 的组成及其工作流程

    在 Hadoop1 中 MapReduce 框架即负责集群的资源调度,还负责 MapReduce 程序的运行.由于这种架构资源调度和计算高度耦合,导致了一个 Hadoop 集群中只能跑 MapRedu ...

  5. 什么是MapReduce,MapReduce的工作流程和原理是什么

    一.MapReduce的概念 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",和它 ...

  6. Yarn框架和工作流程简介

    大数据现在越来越火,各种计算框架不断出现,比如内存计算框架(Spark).流式计算框架(Storm).迭代式计算框架(iMapReduce)等新型计算框架的出现,经典MR计算框架(MRv1)的局限性日 ...

  7. MapReduce概述及工作流程

    内容 mapreduce原语(独创) mapreduce工作流程(重点) MR作业提交流程(重点) YARN RM-HA搭建(熟练) 运行自带的wordcount(了解) 动手写wordcount(熟 ...

  8. 详细解释什么是hadoop和spark,及其工作原理

    目录 一.hadoop一些知识点: 1.HDFS知识: 1.1 HDFS工作机制 1.2 HDFS 写数据流程 1.3 HDFS 读数据流程 2.MapReduce原理 2.1 什么是 MapRedu ...

  9. 分布式管理控制系统Git与项目托管平台Github相关概念、工作流程与操作方法

    尐轩web前端技术博客 -- 丛培森 Payen S.Tsung --There's no place like 127. 0. 0. 1 目录视图 摘要视图 订阅 CSDN学院招募微信小程序讲师啦  ...

  10. 原来大数据工作流程可以这样理解------生米煮成熟饭!

    碎碎念 最近一直在思考作为测试工程师,如何以大数据为方向,提升自己的知识储备,适应接下来的市场需求,于是看了很多大数据相关的前辈们的文章,加上自己的理解,竟然觉着大数据工作处理流程,就好像我们在煮饭! ...

最新文章

  1. opencv实现快速傅立叶变换和逆变换
  2. vue 白边 项目_GUIDE.md · kaiking_g/g6-vue-demo - Gitee.com
  3. python输入一个人的名字_怎样用c语言做到输入一个人的名字才会输出一个心?
  4. jenkins的svn路径中文问题
  5. c#app.config配置文件使用
  6. JSON对象中的函数调用,JSON格式的字符串对应的函数调用方法
  7. [51单片机] 四相五线减速比为1/64步进电机驱动设计
  8. backup exec 安装时报‘Microsoft sql express安装失败
  9. 东芝Toshiba DP-2210 打印机驱动
  10. [Python从零到壹] 四十二.图像处理基础篇之图像金字塔向上取样和向下取样
  11. 电脑如何防蹭网?使用防蹭网功能杜绝未知设备连接WiFi
  12. 京东方、立讯精密纷纷向苹果靠拢,再次撕下国产手机遮羞布
  13. 工业控制靶场记录以及工业控制协议的简单介绍
  14. 对话,对话,全是超级爆笑对话
  15. 手写文字识别的使用软件
  16. 手机中PDF格式转换PPT操作方法
  17. 安卓app开发工具_四川智慧社区安卓手机app开发多少钱
  18. 内存整理的原理是什么?
  19. 1M带宽能做些什么?
  20. Vue2 轮播图组件 slide组件

热门文章

  1. python实时监听微博发文同步到微信
  2. 智能防盗报警系统前端报警设备的选择
  3. Building a Hypermedia-Driven RESTful Web Service
  4. 基于easyui的 增 删 改 查
  5. c语言bbs论坛管理系统,C语言编程论坛的设计与开发---论文.doc
  6. linux 命令杂集
  7. 【电脑技术】修改无线网卡MAC地址失败的原因
  8. 计算机桌面右键点击 网络,电脑桌面右键单击鼠标一直转圈如何解决
  9. 程序开发类本科论文结构【2022年修改】
  10. mac safari java插件_如果提示您信任或更新 Mac 上 Safari 浏览器中的插件