2.Spark的工作与架构原理
概述
目标:
- spark的工作原理
- spark数据处理通用流程
- rdd
- 什么是
rdd rdd的特点
- 什么是
- spark架构
- spark架构相关进程
- spark架构原理
spark的工作原理
spark 的工作原理,如下图

- 图中中间部分是
spark集群,也可以是基于yarn的,图上可以理解为spark的standalone集群,集群中有6个节点 - 左边是
spark的客户端节点,这个节点主要的任务是向spark集群提交任务, - 左边的
hdfs是提交的任务所需要的数据源,当spark读取hdfs中的数据后,会将数据转化为rdd,rdd是弹性分布式数据集,是一个逻辑概念,在此,可以先理解为一个数据集合就可,这个rdd是具有分区特性的,如节点1,节点2,节点3,这样可以轻易的提高数据的并发处理能力 - 接下来就可以对这
rdd数据进行处理了,图中使用了,flatMap函数,计算之后的结果还是一个带有分区的rdd,就是在节点4,节点5,节点6 - 当处理到最后一步的时候是需要将数据存起来的,实际工作中,针对离线计算的,大部分的结果数据都是存储在
hdfs上的,也可以存储在其它的存储介质中。
针对上面几条,可以总结出,spark处理数据的基本构成,如下图

后面
spark代码中基本都是这三板斧
rdd
rdd 是 spark 中一个很重要的概念
什么是rdd
在实际工作中,rdd 通常通过 hadoop 上的文件,即 hdfs 文件进行创建,也可以通过程序中的集合来创建,rdd是 spark 提供的核心抽象,全称为 Resillient Distributed Dataset ,即弹性分布式数据集
rdd 的特点
- 弹性:
rdd数据默认情况下是存储在内存中,但是在内存资源不足时,spark也会自动将rdd数据写入磁盘 - 分布式:
rdd在抽象上来说是一种元素集合,它是被分区的,每个分区分布在集群中的不同节点上,从而让rdd中的数据可以被并行操作 - 容错性:
rdd最重要的特性就是提供了容错性,可以自动从节点失败中恢复过来,如果某个节点上的rdd分区,因为节点故障了,导致数据丢了,那么rdd会自动通过自己的数据来源重新计算该分区的数据
spark架构
下面熟悉一下 spark 架构相关的进程信息
注意: 在此是以 spark 的 standalone 集群为例进行分析,其实在 spark standalone环境安装 中,成功后有查询对应的 进程 是否成功启动了
spark架构相关进程
- driver:编写的
spark程序就在driver(进程)上,由driver进程负责执行,driver进程所在的节点可以是spark集群的某一个节点,或者就是提交任务的客户端节点,具体driver进程在哪个节点上启动,是由提交任务时指定的参数决定的 - master:集群的主节点中启动的进程,主要负责集群资源管理和分配,还有集群的监控等。
- worker:集群的从节点中启动的进程,主要负责启动其它进程来执行具体的数据处理和计算任务
- executor:此进程由
worker负责启动,主要为了执行数据处理和计算 - taks:是一个线程,由
executor负责启动,是真正干活的
spark架构原理
如下图来看一spark的架构原理

- 在
spark的客户端机器上通过driver进程执行的spark代码,通过spark-submit脚本提交spark任务的时候driver进程就启动了。 driver启动之后,会做一些初始化操作,并找到集群的master进程,对spark程序进行注册- 当
master收到spark程序注册成功之后,会向worker节点发送请求,进行资源调试和分配 worker收到master请求后,为任务启动executor进程,启动多少个,会根据配置来启动executor启动之后会向driver进行注册,这样driver就能知道哪些executor在为它服务了driver会根据对rdd定义的操作,提交一堆的task(map,flatMap等) 去executor上执行
结束
spark 的工作与架构原理就介绍至此,如有问题,欢迎评论区留言。
相关文章:
2.Spark的工作与架构原理
概述 目标: spark的工作原理spark数据处理通用流程rdd 什么是rddrdd 的特点 spark架构 spark架构相关进程spark架构原理 spark的工作原理 spark 的工作原理,如下图 图中中间部分是spark集群,也可以是基于 yarn 的,图上可以…...
qt-C++笔记之带有倒计数显示的按钮,计时期间按钮锁定
qt-C笔记之带有倒计数显示的按钮,计时期间按钮锁定 code review! 文章目录 qt-C笔记之带有倒计数显示的按钮,计时期间按钮锁定1.运行2.main.cc3.main.pro 1.运行 2.main.cc 代码 #include <QApplication> #include <QPushButton> #includ…...
HTML全局属性(global attribute)有哪些?
HTML全局属性是指在HTML元素上可用的基本属性,它们适用于所有HTML元素。以下是一些常见的HTML全局属性: 1:class:为元素指定一个或多个类名,用于与CSS样式表关联。 2:id::为元素指定唯一的标识…...
MyBatis-Plus返回getOne返回null疑惑
getOne返回null 问题描述分析过程总结 问题描述 在数据库建了一张表主要包括两个字段master_id和slave_id;主要的额外字段max_lots 默认值是null; 当调用getOne进行查询结果是null,但实际情况是数据库时应该返回值的; AotfxMasterSlave ex…...
Physics2DPlugin3加载后会跳转gsap官网解决
因工作需要使用Physics2DPlugin3库,目标效果 加载他里面的在线js,使用效果正常,但是几秒会跳转官网,我们app内部、浏览器都会这样。 于是研究js代码,发现里面有setTimeout跳转。 删掉就好了 分享我改好的文件&#x…...
【AI视野·今日Sound 声学论文速览 第三十二期】Tue, 24 Oct 2023
AI视野今日CS.Sound 声学论文速览 Tue, 24 Oct 2023 Totally 20 papers 👉上期速览✈更多精彩请移步主页 Interesting: 📚nvas3d, 基于任意录音和室内3D信息合成重建不同听角(位置)处的新的声音。(from apple cmu) website: htt…...
在Linux上编译gdal3.1.2指南
作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 以Ubuntu 18编译gdal3.1.2为例,编译gdal3.1.2需要先编译proj库和geos库(可选)。我选择的proj库版本为proj-7.1.0,编译proj-7.1.0需要先编译tiff库和sqlite3。我选择的sqlite3的版本为…...
73. 矩阵置零 --力扣 --JAVA
题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 解题思路 通过二层循环找出元素为0所在的行和列;设置标志位记录当前行是否存在元素为0的,设置列表存储列为0的列&#…...
(笔记)Kotlin——Android封装ViewBinding之二 优化
0. 在app模块的build.gradle文件中添加如下配置开启ViewBinding android {.......viewBinding {enabled true}} 1. 新建一个Ext.kt文件 添加两个扩展函数,分别对应Activity和Fragment inline fun <T : ViewBinding> AppCompatActivity.viewBinding(cross…...
MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(八)
目录 前言 几个高频面试题目 机器视觉如何获取到好图像 常见的视觉光源 各种视觉打光方式...
由k8s升级慢引起的etcd性能不足的问题排查
一、基本介绍 最近etcd查看出现性能 curl --cacert /path/to/etcdctl-ca.crt --cert /path/to/etcdctl.crt --key /path/to/etcdctl.key https://:2379/metrics | grep etcd_disk_wal_fsync_duration_seconds_bucket 当集群规模突破过大时规模时,曾出现如下性能瓶颈问题: etc…...
如何构建用于Skydel GNSS模拟仿真的SNMP代理方式?
使用Skydel API构建测试方案 凭借其现代、强大且直观的API,德思特Safran GNSS模拟引擎Skydel免费提供了Python、C#、C和Labview的开源客户端库,它具有600多条命令,并且有完善的文档与记录。 随着Skydel软件更新添加新功能,API得…...
vue2+ant-design-vue a-form-model组件二次封装(form表单组件)FormModel 表单
一、效果图 二、参数配置 1、代码示例 <t-antd-form:ref-obj.sync"formOpts.ref":formOpts"formOpts":widthSize"1":labelCol"{ span:2}":wrapperCol"{ span:22}"handleEvent"handleEvent" />2. 配置参数…...
对比解析php和go对JSON处理的区别
一、go 转化php数组代码 php程序 $str <<<EOF {"操作源":"任意","数据库":"任意","语句类型":"CREATE DATABASE;DROP DATABASE;ALTER DATABASE","影响行数":"不…...
HTTP和HTTPS本质区别——SSL证书
HTTP和HTTPS是两种广泛使用的协议,尽管它们看起来很相似,但是它们在网站数据传输的安全性上有着本质上的区别。 HTTP是明文传输协议,意味着通过HTTP发送的数据是未经加密的,容易受到拦截、窃听和篡改的风险。而HTTPS通过使用SSL或…...
JS 防抖和节流
防抖(debounce)和节流(throttle)是JavaScript中常用的性能优化技术,用于限制某些高频率触发的函数执行次数,减少不必要的计算和网络请求。下面分别介绍防抖和节流的实现方式。 防抖(Debounce&am…...
Django开发实例总结(入门级、4.2.6、详细)
目录 概述 Django的核心组件包括 Django的项目结构 创建工程(4.2.6) 实例一:Hello world 实例二:访问一个自定义主页 实例三:通过登录跳转到主页 实例四:主页添加静态文件,包含js、css、…...
Variations-of-SFANet-for-Crowd-Counting可视化代码
前文对Variations-of-SFANet-for-Crowd-Counting做了一点基础梳理,链接如下:Variations-of-SFANet-for-Crowd-Counting记录-CSDN博客 本次对其中两个可视化代码进行梳理 1.Visualization_ShanghaiTech.ipynb 不太习惯用jupyter notebook, 这里改成了p…...
所有的人机交互都存在不匹配现象
从接受理论的角度来看,就像夫妻一样,所有的人机交互都存在不匹配的现象。 接受理论是一个解释人们如何学习和接受信息的心理模型。该理论认为,当人们学习新信息时,他们会将其与自己已有的知识和经验联系起来,以便更好地…...
LED数码管的静态显示与动态显示(Keil+Proteus)
前言 就是今天看了一下书上的单片机实验,发现很多的器件在Proteus中都不知道怎么去查找,然后想做一下这个实验,尝试能不能实现,LED数码管的两个还可以实现,但是用LED点阵显示器的时候他那个网络标号不知道是什么情况&…...
2026最新免费图片去水印保姆级教程!这5种方法一次学会,第三种零门槛秒出图
你是不是也遇到过这种情况?好不容易在小红书、抖音上刷到一张绝美壁纸,保存下来却被水印破坏了整体美感;想把博主分享的干货截图保存,结果那个半透明的Logo刚好挡在关键数据上。别急,今天这篇教程就是为你准备的。 202…...
2026年AI写作辅助软件实测排行,哪款真正适合写论文?
2026 年学术 AI 论文工具已形成全流程、理工 / 社科、英文 / 中文、免费 / 付费的清晰分化。综合实测排行与场景适配,千笔AI 是中文全能首选,DeepSeek 学术版是理工开源首选,毕业之家是国内毕业专属首选。 一、2026 年实测排行 TOP5ÿ…...
DeepSeek LeetCode 2617. 网格图中最少访问的格子数 Java实现
以下是 LeetCode 2617「网格图中最少访问的格子数」的 Java 实现,采用 BFS TreeSet 优化,保证每个格子只被访问一次,时间复杂度 O(mn log(mn))。java class Solution {public int minimumVisitedCells(int[][] grid) {int m grid.length, n…...
容器化与Kubernetes
容器化与Kubernetes 1. 技术分析 1.1 容器化概述 容器化是现代应用部署的核心技术: 容器化优势轻量级: 共享内核一致性: 环境一致可移植: 跨平台隔离性: 资源隔离容器技术:Docker: 容器引擎containerd: 容器运行时CRI-O: Kubernetes兼容1.2 Kubernetes概述 Kubernet…...
5分钟搞定Sunshine游戏串流:从安装到畅玩的完整指南
5分钟搞定Sunshine游戏串流:从安装到畅玩的完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否想过在卧室的平板上玩书房里的3A大作?或者用手机…...
ClamAV更新失败真相:DNS TXT协议与版本兼容性解析
1. 这不是网络连通性问题,而是ClamAV更新机制被误读的典型现场“Can’t query current.cvd.clamav.net”这个报错,几乎每个在Linux服务器上维护过ClamAV的人都见过。它第一次出现时,90%的运维会立刻去ping、curl、telnet current.cvd.clamav.…...
DeepSeek模型版本选择实战手册(2024最新版):从推理延迟、显存占用到LoRA兼容性全拆解
更多请点击: https://intelliparadigm.com 第一章:DeepSeek模型版本选择实战手册(2024最新版):从推理延迟、显存占用到LoRA兼容性全拆解 选择合适的 DeepSeek 模型版本是部署高效、低成本大模型服务的关键前提。2024…...
Python之ansimagic包语法、参数和实际应用案例
Python ansimagic包完整详解:功能、安装、语法、案例、排错 ansimagic 是Python轻量级终端动画/字符动画工具包,专注于在命令行(CMD、Terminal、PowerShell)中生成流畅的动态字符效果、进度条、加载动画、文字动画、ASCII动画等。…...
ChatGPT新闻稿写作终极模板包(含敏感词实时拦截表+信源可信度打分卡+记者视角反问清单):仅开放前500份
更多请点击: https://kaifayun.com 第一章:ChatGPT新闻稿写作终极模板包概览 本模板包专为公关、市场与内容团队设计,整合了新闻稿结构化框架、语义优化提示词库、合规性检查清单及多平台适配输出模块,支持从初稿生成到终稿发布…...
3分钟快速汉化:HS2-HF_Patch开源工具一键安装、多插件支持、中文游戏体验指南
3分钟快速汉化:HS2-HF_Patch开源工具一键安装、多插件支持、中文游戏体验指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2…...
