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

在这里插入图片描述
由上图可以看出,对于Spark框架有两个核心组件:

Driver

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

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

实际上,我们无法准确地描述Driver的定义,因为在整个的编程过程中没有看到任务有关Driver的字眼,所以简单理解,所谓的Driver就是驱使整个应用运行起来的程序,也称之为Driver类

Executor

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

 Executor有两个核心功能

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

Master & Worker

 Spark集群的独立部署环境中,不需要依赖其他的资源调度框架,自身就实现了资源调度的功能,所以环境中还有其他两个核心组件:Master和Worker,这里的Master是一个进程,主要负责资源的调度和分配,并进行集群的监控等职责,类似于Yarn环境中的RM,而Worker也是进程,一个Worker运行在集群中的一台服务器上,由Master分配资源对数据进行并行的处理和计算,类似于Yarn环境中NM

ApplicationMaster

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

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

Executor与Core

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

应用程序相关启动参数如下:

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

并行度

 在分布式计算框架中一般都是多个任务同时执行,由于任务分布在不同的计算节点进行计算,所以能够真正地实现多任务并行执行,我们将整个集群并行执行任务的数量称之为并行度,那么一个作业到底并行度是多少呢?这个取决于框架的默认配置,应用程序也可以在运行过程中动态修改。

Spark核心编程

Spark计算框架为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景,三大数据结构分别是:

  1. RDD:弹性分布式数据集
  2. 累加器:分布式共享只写变量
  3. 广播变量:分布式共享只读变量

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

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

相关文章

基于未合入PR创建增量patch的git管理方法

目录前言准备操作步骤精准移植基础PR到本地分支修改代码鸿蒙编译、调试、测试具体编译指令、测试步骤这里带过,这不是本文论述重点创建diff文件工作仓库应用最新patch总结前言 作为程序员,多人协同开发同一个需求是正常的。即使是自己一个人搞需求&…

git真正更新项目

背景 Fetch all remote后flutter代码都拉下来,都是Android项目应用不上;git–>update project才生效!!!

AI时代如何拓展Web前端开发的边界

文章目录 1 从“页面仔”到“智能体验构建者”——前端的变与不变2 AI 如何重塑 Web 前端:从开发到用户体验的革命2.1 AI 赋能开发效率:前端工程师的“超级外挂”2.1.1 智能代码辅助与生成2.1.2 自动化测试与 Bug 定位 2.2 AI 提升用户体验,构…

chrome webdrive异常处理-session not created falled opening key——仙盟创梦IDE

注册表错误 :EKKOK:chromeinstallerut1 Lgoogle update settings.cc:26b falled opening key .( e\Update\ClientStateMedium 8A69D345-D564-463c-AFF1-A69D9E530F96} to set usagestats 连接超时 disconnected: received Inspector.detached eventfailed to check if windo…

【Java EE初阶 --- 多线程(进阶)】JUC

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 JUC组件ReentrantLock与s…

免费静态网站搭建

免费静态网站搭建 内容简介搭建步骤GitHub仓库创建Jekyll安装使用Jekyll安装指南Jekyll快速搭建测试Jekyll后续玩法 内容简介 🚩Tech Contents:GithubPage/Jekyll/Custom URLs 🐱GitHub Pages:静态网站托管服务,自动将…

MySQL 8.0 OCP 1Z0-908 题目解析(21)

题目81 Choose two. Examine the modified output: mysql> SHOW SLAVE STATUS\G *************************** 1. row ***************************Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 1612Seconds_Behind_Master value is steadily gro…

Web前端开发-HTML、CSS

文章目录是什么?HTML快速入门VS Code开发工具基础标签&样式新浪新闻-标题标题排版标题样式标题样式-1标题样式-2超链接新浪新闻-正文新浪新闻-正文排版新浪新闻-页面布局表格标签表单标签表单标签-表单项是什么? HTML快速入门 VS Code开发工具 基础标…

Vue.js状态管理: Vuex在大型项目中的实际应用

# Vue.js状态管理: Vuex在大型项目中的实际应用 ## 一、Vuex核心架构与大型项目适配 ### 1.1 状态管理(State Management)的本质需求 在复杂前端系统中,组件间的数据传递成本随项目规模呈指数级增长。根据Vue官方统计,超过500个组…

C++开发:结构体作为函数形参的值传递与引用传递

笔者定义了一个结构体变量,用于作为函数的形参,定义如下:struct CardParameters {float* Average nullptr;int averageSize 0; }; 需求描述:结构体变量作为函数的形参,在函数体中给指针变量分配内存空间并赋值&#…

【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果

注意:考虑到unity小技巧的内容比较多,我将该内容分开,并全部整合放在【unity小技巧】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言实战1、在3D场景中,新建一些不同形状的2D图片2、我们新建一个Lit材质3…

Rust 内存结构:深入解析

Rust 的内存管理系统是其核心特性之一,结合了手动内存管理的效率与自动内存管理的安全性。以下是 Rust 内存结构的全面解析: 内存布局概览 ----------------------- | 代码段 (Text) | 只读,存储可执行指令 ----------------------…

【Chrome】‘Good助手‘ 扩展程序使用介绍

这是我开发的一款 Chrome 浏览器扩展程序,目前主要集成了‘AI对话‘,’总结页面’,‘基于页面问答’等功能,最近几天我也将写一篇介绍如何开发 chrome 扩展程序的博客,带你了解如何开发属于自己的插件。 注&#xff1…

基于mysql8.0.27部署1主2从的MHA集群

目录 一、mysql概述 1.1、关系型数据库 1.2、MySQL数据库 1.3、RDBMS术语 二、mysql的部署 2.1、拉取mysql 2.2、解压 2.3、 改名 2.4、 指定安装文件位置 2.5、 创建用户组 2.6、 修改mysql配置文件 2.7、创建data文件夹 2.8、更改mysql目录权限 2.9、初始化数据…

Highcharts 安装使用教程

一、Highcharts 简介 Highcharts 是一款使用 JavaScript 编写的前端数据可视化库,支持折线图、柱状图、饼图、面积图、散点图等多种图表类型,特点是渲染性能优秀、交互丰富、兼容性强,适合构建商业图表、统计报表等。 二、Highcharts 安装方…

Qt中的坐标系

Qt中的坐标系 1.坐标系概念2.数学坐标系VS计算机坐标系3.Qt坐标系4.像素 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏:【Qt的学习】 📝📝本篇内容&am…

C++原子类型操作与内存序

C原子类型操作与内存序详解 这段内容深入介绍了C标准原子类型的操作接口、内存序语义及使用规范。以下是关键知识点的分层解析&#xff1a; 一、原子类型的命名规则与类型映射 C提供两种方式表示原子类型&#xff1a; 模板特化形式&#xff1a;std::atomic<T>别名形式…

互联网摸鱼日报(2025-07-07)

互联网摸鱼日报(2025-07-07) 钛媒体 一场突如其来的“召回潮”&#xff0c;点燃中国制造的“灵魂拷问” 史上最大外卖补贴战开打&#xff0c;美团聚拢资源迎战“巨无霸” 1315亿加冕潮汕女首富&#xff0c;“最强打工妹”剑指港股 用14346字&#xff0c;讲透上市前必做的10…

七牛云Java开发面试题及参考答案

详述 Java 方法重载的机制与应用场景 Java 方法重载&#xff08;Method Overloading&#xff09;是面向对象编程中的重要特性&#xff0c;它允许同一个类中存在多个同名但参数列表不同的方法。这种机制为代码提供了灵活性和可读性&#xff0c;使得开发者可以用统一的方法名处理…

.net core mvc部署到win10本地的Ubuntu上

将一个 .NET Core MVC 应用部署到 Windows 10 上通过 WSL 安装的 Ubuntu 环境中&#xff0c;可以分为几个步骤来完成。以下是详细的指南&#xff1a;准备工作确保你的Ubuntu环境已安装.NET SDK&#xff1a;首先&#xff0c;你需要在WSL中的Ubuntu上安装.NET SDK。可以通过以下命…