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内核之运行机制相关推荐

  1. Spark系列之Spark应用程序运行机制

    声明:         文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除.感谢.转载请注明出处,感谢. By luoye ...

  2. Spark RDD的运行机制 工作节点分布关系

    1.分区及分区与工作结点(Worker Node)的分布关系 • 通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本质上是一个只读的分区记录集合.每个 RDD可以分成多个分区,每个分区就是一个数 ...

  3. Spark内核解析1

    Spark通讯架构 脚本探究: 概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark 任务调度机制.Spark 内存管理机制.Spark 核心功能的 ...

  4. Spark内核解析之一:内核概述

    Spark 内核概述 Spark 内核泛指 Spark 的核心运行机制,包括 Spark 核心组件的运行机制.Spark任务调度机制.Spark 内存管理机制.Spark 核心功能的运行原理等,熟练掌 ...

  5. 05_大数据技术之Spark内核解析(1.1)

    1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...

  6. Spark内核(上)——附:两种Yarn模式源码解析

    文章目录 一.Spark内核概述 1.1 Spark核心组件回顾 1.1.1 Driver 1.1.2 Executor 1.2 Spark通用运行流程概述 二.Spark通信架构概述 2.1 Spa ...

  7. 【Spark 深入学习 04】再说Spark底层运行机制

    本节内容 · spark底层执行机制 · 细说RDD构建过程 · Job Stage的划分算法 · Task最佳计算位置算法 一.spark底层执行机制 对于Spark底层的运行原理,找到了一副很好的 ...

  8. 通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构

    本期内容: 1. Spark Streaming Job架构与运行机制 2. Spark Streaming 容错架构与运行机制 事实上时间是不存在的,是由人的感官系统感觉时间的存在而已,是一种虚幻的 ...

  9. Spark 运行机制

    1. Spark运行基本流程 构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone.Mesos或YARN) ...

最新文章

  1. LeetCode --Search Insert Position
  2. php 关于文件的一些封装好的函数
  3. 阿里SRE体系如何支撑24小时峰值压力、220+个国家“剁手党”?
  4. Android JNI和NDK学习(5)--JNI分析API
  5. 26.0.0-alpha1_WildFly 8.0.0.Alpha1的发布和一些历史
  6. 【渝粤教育】广东开放大学 劳动关系理论与实务 形成性考核 (1)
  7. string也可以很精彩
  8. 经典基础算法之面试题(系列一)(转)
  9. 百度BCH云服务器SSL证书服务(免费申请流程)- 申请篇
  10. 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等
  11. bzoj 1562 [NOI2009]变换序列 二分图
  12. 发生无法识别的错误_车牌识别系统的核心部件抓拍摄像机怎么安装?
  13. robotframework的学习笔记(十六)----robotframework标准库String
  14. 投资人常用的忽悠用语!
  15. Swift - whose view is not in the window hierarchy 问题解决方法
  16. iot软件测试,IoT研发测试工程师
  17. 写在2020.11.19 周四晚上
  18. 线程死锁、锁死、饥饿、活锁讲解
  19. 图片和图片转base64大小的关系
  20. ExecuteNonQuery()返回值

热门文章

  1. Spring事务7种传播行为速记方法
  2. Android 消息通知
  3. 基于MISRA-C和VS Code的代码静态检查的开源解决方案
  4. Win10 右键新建没有WORD文档创建菜单?
  5. HDU-2085核反应堆
  6. 图形类的实现(java)
  7. ELK 安装Beat
  8. 计算机科学专刊级别,计算机科学期刊介绍 各种杂志投稿方式和评价.doc
  9. 计算机应用专业毕业求职信,计算机应用专业毕业生求职信范文
  10. pci-e服务器显卡性能,三代标准同堂竞技,再测PCI-E带宽对显卡性能影响