spark架构和RDD相关概念

 运行架构:

         Spark采用master - slave结构,Driver作为master负责作业任务调度,Executor作为slave负责实际执行任务。

核心组件

  1.  Driver:执行Spark任务的main方法,将用户程序转化为作业,在Executor间调度任务,跟踪Executor执行情况并通过UI展示运行情况。
  2. -Executor:工作节点中的JVM进程,运行任务并返回结果,还为缓存的RDD提供内存式存储。
  3. Master & Worker:在独立部署环境中,Master负责资源调度分配和集群监控,Worker在Master分配资源后进行数据并行处理。
  4. -ApplicationMaster:在YARN环境中,负责申请资源容器、运行任务、监控任务状态和处理异常。

核心概念

  • Executor与Core:Executor是计算节点,可通过参数指定其数量、内存大小和虚拟CPU核数量。
  • 并行度:指集群并行执行任务的数量,默认由框架配置,也可在应用运行时动态修改。
  • 有向无环图(DAG):是Spark程序数据流的高级抽象模型,用图形表示程序计算执行过程,用于展示程序拓扑结构。

提交流程

      以Yarn环境为例,Spark应用程序有Client和Cluster两种部署执行方式。

  1. Yarn Client模式:Driver在本地机器运行,与ResourceManager通讯申请启动ApplicationMaster,后续完成Executor启动、反向注册等流程后执行main函数,遇到Action算子时划分stage并分发task。
  2. Yarn Cluster模式:Driver在Yarn集群资源中执行,任务提交后申请启动ApplicationMaster(此时ApplicationMaster就是Driver),后续流程与Client模式类似 。

RDD相关概念

RDD概述:

      RDD是Spark最基本的数据处理模型,是一个抽象类,代表弹性、不可变、可分区且元素可并行计算的集合。具有存储、容错、计算、分片弹性,数据分布式存储,封装计算逻辑但不保存数据。

核心属性:

      包含分区列表、分区计算函数、RDD之间的依赖关系、分区器(K-V类型数据时可选)、首选位置(可选),这些属性是RDD实现分布式计算和高效处理的关键。

执行原理:

       在Yarn环境中,Spark先申请资源创建调度和计算节点,将计算逻辑按分区划分为任务,调度节点根据计算节点状态发送任务执行,RDD负责封装逻辑并生成任务。

RDD序列化:

       涉及闭包检查,确保算子外数据可序列化;Spark支持Kryo序列化框架,比Java序列化速度快10倍,使用时即使采用Kryo序列化,相关类也需继承Serializable接口。

RDD依赖关系

血缘关系:

     记录RDD元数据和转换行为,用于恢复丢失分区数据。

依赖类型:

     窄依赖指父RDD分区最多被一个子RDD分区使用;

     宽依赖指父RDD分区被多个子RDD分区依赖,会引发Shuffle。

阶段与任务划分:

      DAG记录RDD转换和任务阶段;一个Action算子生成一个Job,Stage数量为宽依赖个数加1,一个Stage中最后一个RDD的分区数就是Task个数。

RDD持久化

Cache缓存:

     通过Cache或Persist方法缓存计算结果,默认存于JVM堆内存,触发action算子时缓存,缓存丢失可重算丢失部分。

CheckPoint检查点:

     将RDD中间结果写入磁盘,切断血缘依赖,提升容错性,执行Action操作才会触发。

区别:

      Cache不切断血缘,数据可靠性低;Checkpoint切断血缘,数据存储在高可靠文件系统。建议对Checkpoint的RDD使用Cache缓存以提升效率。

RDD分区器:

      Spark支持Hash分区(默认)、Range分区和用户自定义分区,仅Key - Value类型RDD有分区器。

       Hash分区根据key的hashCode取余确定分区;Range分区将数据按范围映射到分区,保证数据均匀且分区间有序。

RDD文件读取与保存:

        可从文件格式(text、csv、sequence、object文件)和文件系统(本地、HDFS、HBASE、数据库)两个维度区分。不同文件格式有相应读取和保存方法,如text文件用 sc.textFile 读取、 saveAsTextFile 保存。

 

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

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

相关文章

安全是基石

“安全是基石”这句话强调了安全在个人、企业、社会等各个层面中的基础性和不可替代的重要性。无论是物理安全、网络安全、数据安全,还是生产安全、公共安全,都是保障稳定发展的前提。以下是不同领域中“安全”作为基石的体现: 1. 个人安全 基…

Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量

目录 1.make 1.1 make 命令格式 2.Makefile 核心概念‌ ‌ 2.1创建并运行 Makefile步骤 3. Makefile编写 3.1最基础Makefile 3.1.1使用默认make命令 3.1.2使用make -f 命令 3.1.2.1 使用make -f 命令执行默认make操作 3.1.2.2使用 make [ ‐f file ] [ targets ]命令 …

城市应急安防系统EasyCVR视频融合平台:如何实现多源视频资源高效汇聚与应急指挥协同

一、方案背景 1)项目背景 在当今数字化时代,随着信息技术的飞速发展,视频监控和应急指挥系统在公共安全、城市应急等领域的重要性日益凸显。尤其是在关键场所,高效的视频资源整合与传输能力对于应对突发公共事件、实现快速精准的…

双Token实现用户登录身份认证-Java版

双Token实现用户登录身份认证-Java版 1. 设计方案 方案概述: Access Token: 短期有效的JWT,包含用户ID、设备ID、token版本号。Refresh Token: 长期有效的令牌,存储于Redis,关联用户信息、设备ID及token版本号,用于刷新Access Token。设备绑定: Token与设备ID绑定,防止跨…

Proteus vs Multisim:电路设计与仿真软件对比

Proteus和Multisim作为两款主流的电路设计与仿真软件,在功能定位和应用场景上既有重叠也有显著差异。以下从多个维度综合阐述两者的异同点: 一、相同点 基础功能 ✅ 电路原理图设计:支持电路设计和仿真分析。 ⚙️ 虚拟仪器:提供…

ssh 三级跳

ssh 三级跳 在网络安全和数据传输领域,SSH(Secure Shell)是一种常用的协议,用于加密两台计算机之间的通信。在某些情况下,你可能需要通过一个中间服务器来间接连接到目标服务器,这通常被称为“三级跳”或“…

Java 性能优化:从原理到实践的全面指南

性能优化是 Java 开发中不可或缺的一环,尤其在高并发、大数据和分布式系统场景下,优化直接影响系统响应速度、资源利用率和用户体验。Java 作为一门成熟的语言,提供了丰富的工具和机制支持性能调优,但优化需要深入理解 JVM、并发模…

【土堆 PyTorch 教程总结】PyTorch入门

目录 一、python学习中两大法宝函数 1、dir() 2、help() 二、PyTorch读取数据集 1、Dataset类 (1)作用和基本原理 (2)常见用法 (3)自定义 Dataset 示例 2、Dataloader类 (1&#xff0…

5.DJI-PSDK:Psdk开发负载与Msdk的应用app进行交互:

DJI-PSDK:Psdk开发负载与Msdk的应用app进行交互: 负载设备和无人机使用数据传输模块,在控制命令传输通道上以透传的方式在PSDK和MSDK间传输控制指令。在高速数据传输通道上以透传的方式在PSDK和MSDK间传输数据信息以及用户自定义的数据。使用数据传输功能,不仅可以设置不同…

2025 蓝桥杯省赛c++B组个人题解

声明 本题解为退役蒻苟所写,不保证正确性,仅供参考。 花了大概2个半小时写完,感觉比去年省赛简单,难度大概等价于 codeforces dv4.5 吧 菜鸡不熟悉树上背包,调了一个多小时 题目旁边的是 cf 预测分 所有代码均以通…

Dubbo(53)如何在Spring Boot中集成Dubbo?

在Spring Boot中集成Dubbo可以通过Spring Boot Starter来简化配置&#xff0c;以下是详细的步骤和相关代码示例。 1. 引入依赖 首先&#xff0c;在Spring Boot项目的 pom.xml 中添加Dubbo相关的依赖&#xff1a; <dependencies><!-- Spring Boot Starter --><…

开发一个环保回收小程序需要哪些功能?环保回收小程序

废品分类展示与识别 详细分类列表&#xff1a;清晰展示常见废品类型&#xff0c;如废纸&#xff08;报纸、书本纸、包装纸等&#xff09;、塑料&#xff08;塑料瓶、塑料容器、塑料薄膜等&#xff09;、金属&#xff08;易拉罐、铁制品、铜制品等&#xff09;、玻璃&#xff0…

抗干扰CAN总线通信技术在分布式电力系统中的应用

摘要&#xff1a;随着分布式电力系统的广泛应用&#xff0c;其通信系统的可靠性与稳定性受到了前所未有的挑战。CAN总线通信技术以其卓越的抗干扰性能和可靠性&#xff0c;在众多通信技术中脱颖而出&#xff0c;成为解决分布式电力系统通信问题的关键。本文深入剖析了CAN总线通…

MySQL与Oracle深度对比

MySQL与Oracle深度对比&#xff1a;数据类型与SQL差异 一、数据类型差异 1. 数值类型对比 数据类型MySQLOracle整数TINYINT, SMALLINT, MEDIUMINT, INT, BIGINTNUMBER(精度) 或直接INT(内部仍为NUMBER)小数DECIMAL(p,s), FLOAT, DOUBLENUMBER(p,s), FLOAT, BINARY_FLOAT, BI…

探索 Rust 语言:高效、安全与并发的完美融合

在当今的编程语言领域&#xff0c;Rust 正以其独特的魅力吸引着越来越多开发者的目光。它诞生于 Mozilla 实验室&#xff0c;旨在解决系统编程中长久以来存在的难题&#xff0c;如今已成为构建可靠、高效软件的有力工具。 1 内存安全 Rust 通过所有权&#xff08;ownership&a…

springboot框架集成websocket依赖实现物联网设备、前端网页实时通信!

需求&#xff1a; 最近在对接一个物联网里设备&#xff0c;他的通信方式是 websocket 。所以我需要在 springboot框架中集成websocket 依赖&#xff0c;从而实现与设备实时通信&#xff01; 框架&#xff1a;springboot2.7 java版本&#xff1a;java8 好了&#xff0c;还是直接…

第八天 开始Unity Shader的学习之Blinn-Phong光照模型

Unity Shader的学习笔记 第八天 开始Unity Shader的学习之Blinn-Phong光照模型 文章目录 Unity Shader的学习笔记前言一、Blinn-Phong光照模型①计算高光反射部分效果展示 二、召唤神龙:使用Unity内置的函数总结 前言 今天我们编写另一种高光反射的实现方法 – Blinn光照模型…

React八案例上

代码下载 技术栈&#xff1a; React 核心库&#xff1a;react、react-dom、react-router-dom脚手架&#xff1a;create-react-app数据请求&#xff1a;axiosUI组件库&#xff1a; antd-mobile其他组件库&#xff1a; react-virtualized、formikyup、react-spring 等百度地图A…

线代[13]|线性代数题37道以及数学分析题3道(多图预警)

博主首次发布于CSDN&#xff0c;禁止转载&#xff01;&#xff08;CSDN&#xff1a;汉密士2025&#xff09; 文章目录 一、缘起&#xff5c;《俗说矩阵》课程目录照片存档&#xff5c;线性代数学习脉络&#xff5c;线代习题集封面存档&#xff5c;未来——我与线性代数的纠缠 二…

OpenCV 图形API(24)图像滤波-----双边滤波函数bilateralFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 应用双边滤波到图像。 该函数对输入图像应用双边滤波&#xff0c;如 http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Fil…