一、Spark内核之运行机制
Spark内核系列目录
一、Spark内核的运行机制
二、Spark内核的通讯架构
文章目录
- Spark内核系列目录
- 前言
- 一、Spark核心组件
- 1.Driver
- 2. Executor
- 3. Spark运行流程
- 二、Spark部署方式
- 三、YARN模式运行机制
- 1、YARN Cluster模式
- 2、YARN Client模式
- 总结
前言
Spark内核一般指Spark的核心运行机制,包括核心组件的运行机制、任务调度机制、内存管理机制、核心功能运行原理。
一、Spark核心组件
1.Driver
Driver是Spark的驱动器节点,用于执行Spark任务中的main方法,负责实际代码的执行工作。Driver在Spark作业执行时主要负责:
- 将用户程序转化为作业(Job)
- 在Executor之间调度任务(Task)
- 跟踪Executor执行情况
- 通过UI展示查询运行情况
2. Executor
Spark Executor对象是负责在Spark作业中执行具体任务,每个任务之间相互独立。Spark应用启动时,ExecutorBackend节点同时被启动,而且始终伴随着Spark应用的生命周期而存在。如果有ExecutorBackend节点发生了故障或崩溃,Spark也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续执行。 Executor有两个核心功能:
- 负责运行组成Spark应用的任务,并将结果返回给驱动器(Driver)
- 他们通过块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
3. Spark运行流程
spark应用程序核心运行步骤如下:
- 任务提交,启动Driver程序;
- Driver向集群管理器注册应用程序;
- 集群管理器根据任务配置分配Executor并启动;
- Driver执行main函数,执行到Action算子时开始反向推算,根据宽依赖进行划分Stage,每个Stage对应一个Taskset,其中Taskset中有多个Task,查找可用资源Executor进行调度;
- 根据本地化原则,Task会被分发到指定的Executor去执行,在任务执行的过程中,Executor也会不断与Driver进行通信,报告任务运行状况。
二、Spark部署方式
Spark支持多种集群管理器(Cluster Manager),分别为:
1)、Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需其他资源管理系统。
2)、Hadoop YARN:统一的资源管理机制,可运行多个计算框架。Driver在集群中的位置可分为:yarn client(集群外)与yarn cluster(集群内)。
3)、Apache Mesos:强大的分布式资源管理框架,允许多个不同的框架部署在上面,包括YARN。
4)、K8S:容器化部署环境。
此外,Spark还提供了方便用户测试学习的本地集群部署模式与Windows环境,Hadoop YARN部署方式是企业最常用的。
三、YARN模式运行机制
1、YARN Cluster模式
(1)执行脚本提交任务,即启动SparkSubmit的JVM进程;
(2)SparkSubmit类中的main方法反射调用YarnClusterApplication的main方法;
(3)YarnClusterApplication创建Yarn客户端,想Yarn服务器发送指令:bin/java ApplicationMaster;
(4)Yarn框架在收到指令后会在指定的NM启动ApplicationMaster;
(5)ApplicationMaster启动Driver线程,执行用户的作业;
(6)AM向RM注册,申请资源;
(7)获取资源后AM向NM发送指令:bin/java YarnCoarseGrainedExecutorBackend;
(8)CoarseGrainedExecutorBackend进程会接收信息,和Driver通信,注册已经启动的Executor;然后启动计算对象Executor等待接受任务;
(9)Driver线程继续执行完成作业的调度和任务的执行;
(10)Driver分配任务并监控任务的执行。
注意:SparkSubmit、ApplicationMaster和CoarseGrainedExecutorBackend是独立的进程;Driver是独立的线程;Executor和YarnClusterApplication是对象。
2、YARN Client模式
(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程;
(2)SparkSubmit类中的main方法反射调用用户代码的main方法;
(3)启动Driver线程,执行用户的作业,并创建ScheduleBackend;
(4)YarnScheduleBackend想RM发送指令:bin/java ExecutorLauncher;
(5)Yarn框架收到指令后会指定NM中启动ExecutorLauncher(实际上还是调用ApplicationMaster的main方法);
object ExecutorLauncher {def main(args: Array[String]): Unit = {ApplicationMaster.main(args)}
}
(6)AM向RM注册,申请资源;
(7)获取资源后AM向NM发送指令:bin/java CoarseGrainedExecutorBackend;
(8)CoarseGrainedExecutorBackend进程会接收信息,和Driver通信,注册已经启动的Executor,然后启动计算对象Executor等待接收任务
(9)Driver分配任务并监控任务的执行。
注意:SparkSubmit、ApplicationMaster和CoarseGrainedExecutorBackend是独立的进程;Executor和Driver是对象。
总结
本章主要介绍了Spark的运行机制,分别从组件角度、运行流程角度及Yarn部署模式角度详细介绍了任务调度机制、资源分配方式等。
一、Spark内核之运行机制相关推荐
- Spark系列之Spark应用程序运行机制
声明: 文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除.感谢.转载请注明出处,感谢. By luoye ...
- Spark RDD的运行机制 工作节点分布关系
1.分区及分区与工作结点(Worker Node)的分布关系 • 通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本质上是一个只读的分区记录集合.每个 RDD可以分成多个分区,每个分区就是一个数 ...
- Spark内核解析1
Spark通讯架构 脚本探究: 概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark 任务调度机制.Spark 内存管理机制.Spark 核心功能的 ...
- Spark内核解析之一:内核概述
Spark 内核概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark任务调度机制.Spark 内存管理机制.Spark 核心功能的运行原理等,熟练掌 ...
- 05_大数据技术之Spark内核解析(1.1)
1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...
- Spark内核(上)——附:两种Yarn模式源码解析
文章目录 一.Spark内核概述 1.1 Spark核心组件回顾 1.1.1 Driver 1.1.2 Executor 1.2 Spark通用运行流程概述 二.Spark通信架构概述 2.1 Spa ...
- 【Spark 深入学习 04】再说Spark底层运行机制
本节内容 · spark底层执行机制 · 细说RDD构建过程 · Job Stage的划分算法 · Task最佳计算位置算法 一.spark底层执行机制 对于Spark底层的运行原理,找到了一副很好的 ...
- 通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构
本期内容: 1. Spark Streaming Job架构与运行机制 2. Spark Streaming 容错架构与运行机制 事实上时间是不存在的,是由人的感官系统感觉时间的存在而已,是一种虚幻的 ...
- Spark 运行机制
1. Spark运行基本流程 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone.Mesos或YARN) ...
最新文章
- LeetCode --Search Insert Position
- php 关于文件的一些封装好的函数
- 阿里SRE体系如何支撑24小时峰值压力、220+个国家“剁手党”?
- Android JNI和NDK学习(5)--JNI分析API
- 26.0.0-alpha1_WildFly 8.0.0.Alpha1的发布和一些历史
- 【渝粤教育】广东开放大学 劳动关系理论与实务 形成性考核 (1)
- string也可以很精彩
- 经典基础算法之面试题(系列一)(转)
- 百度BCH云服务器SSL证书服务(免费申请流程)- 申请篇
- 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
- bzoj 1562 [NOI2009]变换序列 二分图
- 发生无法识别的错误_车牌识别系统的核心部件抓拍摄像机怎么安装?
- robotframework的学习笔记(十六)----robotframework标准库String
- 投资人常用的忽悠用语!
- Swift - whose view is not in the window hierarchy 问题解决方法
- iot软件测试,IoT研发测试工程师
- 写在2020.11.19 周四晚上
- 线程死锁、锁死、饥饿、活锁讲解
- 图片和图片转base64大小的关系
- ExecuteNonQuery()返回值