Spark架构角色及基本运行流程
1. 集群角色

- Application:基于spark的用户程序,包含了一个Driver program 和集群中多个Executor
- Driver Program:运行application的main()函数并自动创建SparkContext。Driver program通过一个SparkContext对象来访问Spark,通常用SparkContext代表Driver。
- SparkContext: Spark的主要入口点,代表对计算集群的一个连接,是整个应用的上下文,负责与ClusterManager通信,进行资源申请、任务的分配和监控等。
- ClusterManager:在集群上获得资源的外部服务(spark standalone,mesos,yarm),Standalone模式:Spark原生的资源管理,由Master负责资源,YARN模式:Yarn中的ResourceManager
- Worker Node:集群中任何可运行Application代码的节点,负责控制计算节点,启动Executor或者Driver(Standalone模式:Worder,Yarn模式:NodeManager)
- Executor:为某个Application在worker node上执行任务的一个进程,该进程负责运行task并负责将数据存储在内存或者硬盘上,每个application都有自己独立的一组Executors。
- RDD:弹性分布式数据集,是spark 的基本运算单元,通过scala集合转化读取数据集生成或者由其他RDD进过算子操作得到
- Job:可以被拆分成Task并行计算的单元,一般为Spark Action触发的一次执行作业
- Stage:每个Job会被拆分成很多组Task,每组任务被称为Stage,也可称TaskSet,该属于经常在日志中看到
- Task:被送到executor上执行的工作单元
2. 基本运行流程

SparkContext的初始化过程中,Spark会分别创建DAGScheduler作业和TaskScheduler任务调度两级调度模块:
- DAG Scheduler:根据作业(Job)构建基于Stage的DAG,并将DAG分解成Stage以TaskSets(任务组)的形式提交给任务调度模块Task Scheduler来具体执行
- Task Scheduler:将任务(Task)分发给Executor执行
详细的流程为:

- Application启动之后, 会在本地启动一个Driver进程,用于控制整个流程(假设我们使用的Standalone模式);
- 初始化SparkContext,构建出DAGScheduler、TaskScheduler,以SparkContext为程序运行的总入口;
- 在初始化TaskSechduler的时候,它会向资源管理器(Standalone中是Master)注册Application,Master收到消息后使用资源调度算法在Spark集群的Worker上启动Executor并进行资源的分配,最后将Executor注册到TaskScheduler;
- 资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上,到这里准备工作基本完成了;
- 根据我们编写的业务,如通过sc.textFile("file")加载数据源,将数据转化为RDD;
- DAGScheduer 先按照Action将程序划分为一至多个job(每一个job对应一个DAG),之后DAGScheduer根据是否进行shuffer将job划分为多个Stage,每个Stage过程都是Taskset , DAG将Taskset交给TaskScheduler(由Work中的Executor去执行)
- Executor向SparkContext申请Task;
- Task Scheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor;
- Task在Executor上运行,运行完毕释放所有资源。
Spark架构角色及基本运行流程的更多相关文章
- 【CDN+】 Spark 的入门学习与运行流程
前言 上文已经介绍了与Spark 息息相关的MapReduce计算模型,那么相对的Spark的优势在哪,有哪些适合大数据的生态呢? Spark对比MapReduce,Hive引擎,Storm流式计算引 ...
- 浅析MyBatis(一):由一个快速案例剖析MyBatis的整体架构与运行流程
MyBatis 是轻量级的 Java 持久层中间件,完全基于 JDBC 实现持久化的数据访问,支持以 xml 和注解的形式进行配置,能灵活.简单地进行 SQL 映射,也提供了比 JDBC 更丰富的结果 ...
- Spark学习之路 (七)Spark 运行流程
一.Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext.由SparkContext负责与ClusterMan ...
- Spark Streaming运行流程及源码解析(一)
本系列主要描述Spark Streaming的运行流程,然后对每个流程的源码分别进行解析 之前总听同事说Spark源码有多么棒,咱也不知道,就是疯狂点头.今天也来撸一下Spark源码. 对Spark的 ...
- Spark学习之路 (七)Spark 运行流程[转]
Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext.由SparkContext负责与ClusterManag ...
- 宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程
一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背 ...
- Spark基本运行流程
不多说,直接上干货! Spark基本运行流程 Application program的组成 Job : 包含多个Task 组成的并行计算,跟Spark action对应. Stage : Job 的调 ...
- 2 Spark角色介绍及运行模式
第2章 Spark角色介绍及运行模式 2.1 集群角色 从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点:Master节点主要运行集群管理器的中心化部分,所承 ...
- 大数据学习day18----第三阶段spark01--------0.前言(分布式运算框架的核心思想,MR与Spark的比较,spark可以怎么运行,spark提交到spark集群的方式)1. spark(standalone模式)的安装 2. Spark各个角色的功能 3.SparkShell的使用,spark编程入门(wordcount案例)
0.前言 0.1 分布式运算框架的核心思想(此处以MR运行在yarn上为例) 提交job时,resourcemanager(图中写成了master)会根据数据的量以及工作的复杂度,解析工作量,从而 ...
随机推荐
- Robot Framework中ride.py打不开的解决方法
1.首先查看wxPython版本是否跟python的版本一致,一般都使用wxPython2.8-win64-unicode-2.8.12.1-py27.exe或者wxPython2.8-win32-u ...
- Centos 下硬盘分区的最佳方案
Centos7从零开始]Centos 下硬盘分区的最佳方案 2016年12月25日 10:09:02 浮華的滄桑 阅读数 41971 在对硬盘进行分区前,应该先弄清楚计算机担负的工作及硬盘的容量有 ...
- [LOJ3119][CTS2019|CTSC2019]随机立方体:组合数学+二项式反演
分析 感觉这道题的计数方法好厉害.. 一个直观的思路是,把题目转化为求至少有\(k\)个极大的数的概率. 考虑这样一个事实,如果钦定\((1,1,1),(2,2,2),...,(k,k,k)\)是那\ ...
- TCP连接数配置
一般的设置规则为: 系统最大文件数>可用端口>用户最大文件数 sysctl -a | grep file-max cat /proc/sys/fs/file-max 这表明这台Linux系 ...
- Reduce pandas memory size
有关pandas存储的理论 简单又实用的pandas技巧:如何将内存占用降低90% 代码 Reducing DataFrame memory size by ~65% 上篇的改进 缓解pandas中D ...
- webpack 最新版
之前说过老的版本,webpack@3.8.1 这个版本,现在我们来看看,新版本和老版本的区别 webpack 4 以上的版本 npm 全称 node package manager (node 包管理 ...
- 整理ing
RT 要学习的 专克bzoj权限题 钟神p系列
- 一篇非常好的分析 Selenium 2 和 3 的原理: selenium3:你安装 geckodriver 了吗?
转自:https://testerhome.com/topics/10248 另一篇:Selenium WebDriver的工作原理 https://blog.csdn.net/yoyocat915/ ...
- OpenCV学习笔记(11)——Canny边缘检测
了解Canny边缘检测的概念 1.原理 Canny边缘检测是一种非常流行的边缘检测算法,是 John F.Canny在1986年提出的.它是一个有很多步构成的算法 1)噪声去除 使用5*5的高斯滤波器 ...
- leetcode 118. Pascal's Triangle 、119. Pascal's Triangle II 、120. Triangle
118. Pascal's Triangle 第一种解法:比较麻烦 https://leetcode.com/problems/pascals-triangle/discuss/166279/cpp- ...