Spark 运行架构

运行架构

Spark 框架的核心是一个计算引擎,整体来说,它采用了标准的 master-slave 结构。上图中的 Driver 表示 master ,负责管理整个集群中的作业任务调度;Executor 则是 slave,负责实际执行任务;

核心组件

Driver

Spark 驱动器节点,用于执行 Spark任务中的 main 方法,负责实际代码的执行工作;Driver 在 Spark 作业执行时主要负责:

  • 将用户程序转化为作业(job)
  • 在 Executor 之间调度任务(task)
  • 跟踪 Executor 的执行情况
  • 通过 UI 展示查询运行情况

Work

集群从节点,负责启动 Executor 或 Driver ;

Executor

Spark Executor 是集群中工作节点(Worker)中的一个 JVM 进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立。Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他 Executor 节点上继续运行;
Executor 的两个核心功能

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

ClusterManager

standalone 模式种即为 Master 节点,控制整个集群;yarn 模式种为 ResourceManager;

核心概念

Executor 与 Core

Spark Executor 是集群中运行在 Worker 中的一个 JVM 进程,是整个集群中专门用于计算的节点。在提交应用时可以提供参数指定计算节点的个数,以及对应应的资源。这个资源一般是指 Executor 的内存大小和使用的虚拟 CPU 核(Core)数量;
应用程序相关启动参数如下:

名称说明
- -num-executors配置 Executor 的数量
- -executor-memory配置 Executor 的内存大小
- -executor-cores配置 Executor 的虚拟 CPU Core 数量

并行度(Parallelism)

在分布式计算框架中一般都是多个任务同时执行,由于任务分布在不同的计算节点进行计算过,所以能够真正地实现多任务并行执行,我们将整个集群并行执行任务的数量称之为并行度;

RDD

弹性分布式数据集,是 Spark 的核心结构,可以通过一系列算子进行操作;
特性

  • 弹性:
    存储弹性:内存与磁盘自动切换;
    容错弹性:数据丢失可以自动恢复;
    计算弹性:计算出错有重试机制;
    分片弹性:可以根据需要重新分片;
  • 分布式:数据存储在大数据集群不同节点上;
  • 数据集:RDD 封装了计算逻辑,并不保存数据,所以对 RDD 的操作并不会改变数据本身,改变的只是 RDD 提供的数据副本;
  • 数据抽象:RDD 是一个抽象类,需要子类具体实现;
  • 不可变:RDD 可以类似看作 String ,是不可改变的,只能产生新的 RDD;
  • 可分区、并行计算;

有向无环图(DAG)

在这里插入图片描述
有向无环图并不是真正意义的图形,而是由 Spark 程序直接映射成的数据流的高级抽象模型,描述了 RDD 的依赖关系;
当 RDD 遇到 Action 算子时,会将之前的所有算子形成一个 DAG ,也就是 RDD Graph,再在 Spark 中转化为 Job ,提交到集群执行。一个 APP 中可以包含多个 Job;

Job

一个 RDD Graph 触发的作业,往往由 Spark Action 算子触发,在 SparkContext 中通过 runJob() 方法向 Spark 提交 Job;

Stage

每个 Job 会根据 RDD 的宽依赖关系被切分成多个 Stage,每个 Stage 中包含一组相同的 Task,这一组 Task 也叫 TaskSet;

Task

一个分区对应一个 Task,Task 执行 RDD 中对应 Stage 中包含的算子。Task 被封装好后放入 Executor 的线程池中执行;

一个 Job 包含多个 Stage,一个 Stage 包含多个 Task;

程序提交运行流程

Yarn client 模式
在这里插入图片描述
在这里插入图片描述

1、在 Yarn client 模式下,通过 spark-submit 提交程序后,会在 client 服务器运行 main() 函数,启动 Dirver 进程;
2、Driver 开始构建并初始化 SparkContext ;
3、SparkContext 向 ClusterManager(ResourceManager)注册,并申请运行 Executor 的资源(内核和内存);
4、ClusterManager 根据 SparkContext 提出的申请和 Worker(NodeManager) 的心跳报告,来决定在哪个 Worker 上启动 Executor;
5、Worker 节点收到请求后会启动 Executor;
6、Executor 向 SparkContext 注册,这样 Driver 就知道哪些 Executor 运行该应用;
7、SparkContext 构建 DAG 图,DAG Scheduler 将 DAG 图分解成多个 Stage ,并把每个 Stage 的 TaskSet 发送给 Task Scheduler ;
8、Executor 向 SparkContext 申请 Task ,Task Secheduler 将 Task发送给 Executor,同时 SparkContext 将程序代码发送给 Executor;
9、Task 在 Executor 上运行,把运行结果反馈给 Task Scheduler,然后再反馈给 DAG Scheduler,运行完毕后写入数据;
10、SparkContext 向 ClusterManager 注销并释放所有资源;

Yarn cluster 模式
在这里插入图片描述

1、在 Yarn cluster 模式下,通过 spark-submit 提交任务后,会启动一个临时进程;
2、临时进程向 ClusterManager(ResourceManager) 通信申请启动 ApplicationMaster(Driver);
3、 ClusterManager分配 container,并通知 NodeManager 启动 ApplicationMaster,此时的 ApplicationMaster 就是 Driver;
4、NodeManager 启动 Driver;
5、Driver 启动后开始运行用户 main() 函数;
6、Driver开始构建 SparkContext;
7、SparkContext 向 ClusterManager注册 Application 并申请运行 Executor 的资源;
8、ClusterManager收到 Driver 的资源申请后会分配合适的 Worker 节点;
9、Worker 节点启动 Executor 进程;
10、Executor 进程启动后会向 SparkContext 反向注册;
11、SparkContext 构建 DAG 图,DAG Scheduler 将 DAG 图分解成多个 Stage ,并把每个 Stage 的 TaskSet 发送给 Task Scheduler ;
12、Executor 向 SparkContext 申请 Task ,Task Secheduler 将 Task发送给 Executor,同时 SparkContext 将程序代码发送给 Executor;
13、Task 在 Executor 上运行,把运行结果反馈给 Task Scheduler,然后再反馈给 DAG Scheduler,运行完毕后写入数据;
114、SparkContext 向 ClusterManager 注销并释放所有资源;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/384433.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:百数平台图表联动功能设置与实战应用

在当今数据驱动的时代,图表的联动功能已成为数据分析的得力助手。通过深度整合各类图表,如柱形图、折线图、饼图、雷达图、条形图、透视图、面积图、双轴图、地图以及漏斗图等,我们实现了图表之间的无缝衔接,使得数据的呈现与探索…

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…

【Ant Design Pro】快速上手

初始化 初始化脚手架:快速开始 官方默认使用 umi4,这里文档还没有及时更新(不能像文档一样选择 umi 的版本),之后我选择 simple。 然后安装依赖。 在 package.json 中: "start": "cross-e…

基于微信小程序+SpringBoot+Vue的青少年科普教学系统平台(带1w+文档)

基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 基于微信小程序SpringBootVue的青少年科普教学系统平台(带1w文档) 这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完成信息处理,还缩短高校教师成果信息管理流程,使其系统化…

qt初入门9:qt记录日志的方式,日志库了解练习(qInstallMessageHandler,qslog, log4qt)

项目中用到qt,考虑有需要用到去记录日志,结合网络,整理一下,做记录。 简单了解后,qt实现日志模块思考: 1:借助qt自带的qInstallMessageHandler重定向到需要的目的地。 2:自己封装一…

CogVideo 实测,智谱「清影」AI视频生成,全民免费,连 API 都开放了!

不得不说,AI 视频生成界最近非常火热~ 前有快手「可灵」开放内测,一下子带火了老照片修复,全网刷屏: 怕是你还没拿到内测资格,被称为 “国货之光” 的「可灵」就结束了免费无限量模式。每天只有66点的免费额度&#x…

看 Unity 组件的源码 —— ILSpy

ILSpy 是开源的 .NET 程序集浏览器和解编译器。 下载 ILSpy ILSpy Github 地址:icsharpcode/ILSpy: .NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform! (github.com) 它有 Release 包可以下载 也提供 IDE 的…

静态路由学习笔记

1. 静态路由应用场景 (1)静态路由由网络管理员手动配置,配置方便,对系统要求低,适用于拓扑结构简单并且稳定的小型网络。 (2)缺点是不能自动适应网络拓扑的变化,需要人工干预过多。…

Python爬虫技术 第13节 HTML和CSS选择器

在爬虫技术中,解析和提取网页数据是核心部分。HTML 和 CSS 选择器被广泛用于定位网页中的特定元素。下面将详细介绍这些选择器如何在 Python 中使用,特别是在使用像 Beautiful Soup 或 Scrapy 这样的库时。 HTML 选择器 HTML 选择器基于 HTML 元素的属性…

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域,确保每笔交易的安全与合规是至关重要的。而企业公户验证API,正是这样一位默默守护的数字卫士,它通过智能化的手段,简化了企业对公账户验证流程,让繁琐的审核变得快捷且可靠。 什么是企业公…

ShadingModel一些分析

一、算法分级 二、DFGTexture 用拟合替换DFGTexture(Ref:Cod-Black Ops II) 优点:节省一张纹理的采样。 缺点: 1、效果上会变得暗一些,并且由于用拟合的原因,会多一点指令计算。 2、后续如…

《Milvus Cloud向量数据库指南》——BGE-M3:多功能、多语言、多粒度的文本表示学习模型

引言 在自然语言处理(NLP)领域,随着大数据时代的到来,对文本信息的精准处理与高效检索成为了研究热点。BERT(Bidirectional Encoder Representations from Transformers)作为近年来NLP领域的里程碑式模型,以其强大的上下文理解能力在多项任务中取得了显著成效。然而,面…

Android APP 音视频(01)MediaCodec解码H264码流

说明: 此MediaCodec解码H264实操主要针对Android12.0系统。通过读取sd卡上的H264码流Me获取视频数据,将数据通过mediacodec解码输出到surfaceview上。 1 H264码流和MediaCodec解码简介 1.1 H264码流简介 H.264,也被称为MPEG-4 AVC&#xff…

【Linux】一些基本指令

文章目录 前言Linux下基本指令Linux下一些常见的通配符Linux下的引号引用whoamiwholswhichaliaswhereisfindtouchmkdirrmdir & rmmancpmvcatmorelessheadtailechodatecalgrepzip & unziptarrz & szuname几个重要的热键关机 前言 在学习操作系统的时候,我…

Dav_笔记12:Automatic SQL Tuning 之 1 概述

自动调整优化器概述 Oracle数据库使用优化程序为已提交的SQL语句生成执行计划。优化器以以下模式运行: ■普通模式 优化器编译SQL并生成执行计划。正常模式为绝大多数SQL语句生成合理的计划。在正常模式下,优化器以非常严格的时间约束运行&#xff0c…

Python 高阶语法

前言: 我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性:  封装  继承 …

Oracle系统表空间的加解密

实验环境 数据库选择的是orclpdb1,当前系统表空间未加密: SQL> show con_nameCON_NAME ------------------------------ ORCLPDB1SQL> select TABLESPACE_NAME, STATUS, ENCRYPTED from dba_tablespaces;TABLESPACE_NAME STATUS …

软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具

工具介绍 各个模块功能的介绍如下: 1、New:在这里创建新的请求、集合或环境;还可以创建更高级的文档、Mock Server 和 Monitor以及API。 2、Import:这用于导入集合或环境。有一些选项,例如从文件,文件夹导…

【Linux】远程连接Linux虚拟机(MobaXterm)

【Linux】远程连接Linux虚拟机(MobaXterm) 零、原因 有时候我们在虚拟机中操作Linux不太方便,比如不能复制粘贴,不能传文件等等,我们在主机上使用远程连接软件远程连接Linux虚拟机后可以解决上面的问题。 壹、软件下…

学习小型gpt源码(自用)

数据集构建_哔哩哔哩_bilibili (b站上有一系列课,从数据处理到模型构建和训练使用) 什么是batch? 为什么一个batch内的句子要一样长? 不同batch的长度可以不一样,但是同一个batch内长度一样!…