IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 四 Spark运行架构 -> 正文阅读

[大数据]四 Spark运行架构

四, Spark 运行架构

4.1 整体架构

  • Spark框架的核心是一个计算引擎, 整体来说, 它采用了主-从master-slave的结构
  • 下图是Spark执行时的基本结构,
    • Driver表示master: 负责管理整个集群中的作业任务调度
    • Executor是slave: 负责实际执行任务

在这里插入图片描述


  • Spark Apllication的运行架构由两部分组成: Driver program(SparkContext)Excutor, Spark Application一般都是在集群中运行, 比如Spark Standalone, YARN, Mesos, 这个集群模式给Spark Application 提供了计算资源, 并对这些资源进行管理, 这些资源既可以给executor运行, 也可以给Driver Progam运行.
  • 根据Spark Allication的Driver program是否在资源集群中运行, Spark Application的运行方式又可以分为Cluster模式Client模式;

有必要掌握的基本术语:

在这里插入图片描述

术语解释
Application类似于MR中的概念, 指的是用户编写的Spark应用程序, 内含有一个Driver功能的代码和分布在集群中多个节点上运行的Excutor代码
Driver Program运行Application 的main()函数并且创建SparkContext, 通常用SparkContext代表Driver Program; 其中创建SparkContext的目的是为了准备Spark应用程序的运行环境; 在Spark中由SparkContext负责和ClusterManager通信, 进行资源的申请, 任务的分配和监控; 当Excutor部分运行完毕后, Driver负责将SparkContext关闭.
Excutor为某个Application运行在Worker节点上的一个进程, Excutor进程负责运行Task, 并且负责将数据存在内存或者磁盘上; 每个Application都有各自独立的excutors
Cluster Manager指的是在集群上获取资源的外部服务,目前有: ? Standalone:Spark原生的资源管理,由Master负责资源的分配;? Hadoop Yarn:由YARN中的ResourceManager负责资源的分配;
Worker NOde集群中任何可运行Application代码的节点, 在Standalone模式中指的就是通过Slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点
Job包含多个Task组成的并行计算, 往往由Spark Action催生, 一个Job包含多个RDD及作用在相应RDD上的各种Operation;
Stage每个Job会被拆分为很多组Task, 每一组任务叫Stage, 或者叫TaskSet
Task被送到某个Excutor上的工作任务
RDDSpark的基本计算单元, 可以通过一系列算子进行操作(主要有Trasformation和 Action操作)
DAG Scheduler根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler
Task Scheduler将Taskset提交给worker(集群)运行并回报结果

4.2 核心组件

4.2.1 Driver && Excutor 计算组件

Driver: 运行Spark Application的main()函数, 并创建SparkContext

Driver 功能
1. 将用户程序(Spark Application)转化为作业(job)
2. 在 Excutor 之间调度任务(task)
3. 跟踪Excutor 的执行情况
4. 通过UI 展示查询运行情况

Excutor: Worker Node中的一个JVM进程, 用来执行分配给该节点的Task,任务彼此之间相互独立;
Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。

Excutor核心功能
负责运行组成Spark应用的任务,并将结果返回给驱动器进程
通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

4.2.2 Master && Worker 资源(只存在于StandAlone中)

Spark集群的独立部署环境(StandAlone)中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能,所以环境中还有其他两个核心组件:Master和Worker

  • 这里的Master是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责,类似于Yarn环境中的RM,
  • 而Worker呢,也是进程,一个Worker运行在集群中的一台服务器上,由Master分配资源对数据进行并行的处理和计算,类似于Yarn环境中NM。

4.2.3 ApplicationMaster (AM) 计算-> AM -> 资源

Hadoop用户向YARN集群提交应用程序时,提交程序中应该包含ApplicationMaster,用于向资源调度器申请执行任务的资源容器Container,运行用户自己的程序任务job,监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况。

  • 说的简单点就是,ResourceManager(资源)和Driver(计算)之间的解耦合靠的就是ApplicationMaster。

4.3 核心概念

4.3.1 Excutor与Core (核)

在这里插入图片描述

4.3.2 并行度(Parallelism)

  • 在分布式计算框架中一般都是多个任务同时进行,由于任务分布在不同的计算结点进行计算, 所有能够真正的实现多任务并行执行, 记住, 这里是并行, 而不是并发.
  • 这里我们将整个集群并行执行任务的数量称之为并行度, 一个作业的并行度是多少取决于框架的默认配置, 应用程序也可以在运行过程中动态修改;

并行: 同一时刻(某个时间点), 一起执行(parallelism)
并发: 某个时间段, 交替快速执行(Concurrence)

4.3.3 有向无环图(DAG)

在这里插入图片描述
在这里插入图片描述

4.4 Spark提交流程

  • 所谓的提交流程, 其实就是开发人员根据需求写的应用程序通过Spark客户端提交给Spark运行环境执行计算的流程
  • Spark运行架构参见下面示意图:
  1. 构建Spark Application的运行环境(启动SparkContext)
  2. SparkContext向资源管理器(可以是Standalone、Mesos、Yarn)申请运行>3. Executor资源,并启动StandaloneExecutorBackend,executor向 SparkContext申请Task。
  3. SparkContext将应用程序代码发放给executor
  4. SparkContext构建成DAG图、将DAG图分解成Stage、将Taskset发送给Task Scheduler、最后由Task Scheduler将Task发放给Executor运行。
  5. Task在Executor上运行,运行完毕释放所有资源。

在这里插入图片描述

4.4.1 Spark on Standalone运行过程(client模式) (阅读源码后补充)

4.4.2 Spark on YARN 运行过程(cluster模式) (阅读源码后补充)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:21:05  更:2022-03-03 16:21:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:30:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码