当前位置: 首页 > news >正文

spark运行架构

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

核心组件:

Driver:执行Spark任务的main方法,负责将用户程序转化为作业、调度任务、跟踪Executor执行情况并通过UI展示运行情况。

Executor:是Worker中的JVM进程,负责运行任务并返回结果,还为RDD提供内存式存储。

Master & Worker:在独立部署环境中,Master负责资源调度和集群监控,Worker负责在Master分配资源后进行数据处理计算。

ApplicationMaster:在YARN环境中,负责申请资源、运行任务、监控任务执行和处理异常情况,解耦合ResourceManager和Driver。

核心概念

Executor与Core:Executor是计算节点,提交应用时可指定其数量、内存大小和使用的虚拟CPU核数量。

并行度:指整个集群并行执行任务的数量,取决于框架默认配置,也可在运行时动态修改。

有向无环图(DAG):是Spark程序映射成的数据流抽象模型,用于直观展示程序执行过程和拓扑结构。

提交流程:以Yarn环境为例,Spark应用有Client和Cluster两种部署执行模式。

Yarn Client模式:Driver在本地机器运行,与ResourceManager通讯申请启动ApplicationMaster,后续流程包括启动Executor、反向注册、执行main函数等,执行Action算子时触发Job并分发任务。

Yarn Cluster模式:Driver在Yarn集群资源中启动,同样与ResourceManager通讯申请资源,启动Executor等,后续任务执行流程与Client模式类似。

Spark Core中的RDD

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

2. 核心属性:包含分区列表、分区计算函数、RDD间依赖关系、分区器(K-V数据时可选)、首选位置(可选),这些属性在分布式计算中发挥关键作用。

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

4. 序列化:包括闭包检查,确保算子外数据可序列化;支持Kryo序列化框架,比Java序列化快10倍,但仍需继承Serializable接口。

5. 依赖关系:RDD通过血缘关系记录元数据和转换行为,用于恢复丢失分区。依赖关系分为窄依赖(父分区最多被子分区的一个使用)和宽依赖(父分区被多个子分区依赖,会引发Shuffle)。基于依赖关系划分阶段和任务,一个Action算子生成一个Job,Stage数量为宽依赖个数加1,一个Stage中最后RDD的分区个数就是Task个数。

6. 持久化:RDD可通过Cache或Persist方法缓存计算结果,默认存于JVM堆内存,触发action算子时缓存,容错机制保证缓存丢失时计算正确。CheckPoint将RDD中间结果写入磁盘,切断血缘依赖,提升容错性,执行Action操作才会触发。Cache可靠性低,CheckPoint数据存储于HDFS等可靠性高的文件系统,建议对Checkpoint的RDD使用Cache缓存。

7. 分区器:Spark支持Hash分区(默认)、Range分区和自定义分区,仅Key - Value类型RDD有分区器。Hash分区根据key的hashCode取余决定分区,Range分区使数据在分区内均匀且有序。

8. 文件读取与保存:可从文件格式(text、csv、sequence、object文件)和文件系统(本地、HDFS、HBASE、数据库)两个维度区分。不同文件格式有各自的读取和保存方法,如textFile和saveAsTextFile用于text文件操作。

词频统计:

 

 

相关文章:

  • 神舟平板电脑怎么样?平板电脑能当电脑用吗?
  • DB2数据库专用python库--ibm_db
  • 计算机控制系统:HX1838红外遥控器解码
  • # 深度学习中的优化算法详解
  • 利用高阶函数实现AOP
  • 蓝桥杯第十五届C++B组省赛真题解析
  • Appium工作原理及环境的搭建(1)
  • 系统性能核心指标:QPS、TPS、RT、并发量详解
  • NVIDIA PhysX 和 Flow 现已完全开源
  • 《Sqoop 快速上手:安装 + 测试实战》
  • 绿电直供零碳园区:如何用清洁能源重塑企业竞争力?
  • 力扣刷题day1(java自用)
  • Cursor编程-从入门到精通__0409
  • Java常用工具算法-6--秘钥托管云服务AWS KMS
  • 西门子S7-1200PLC 工艺指令PID_Temp进行控温
  • spring mvc中不同服务调用类型(声明式(Feign)、基于模板(RestTemplate)、基于 SDK、消息队列、gRPC)对比详解
  • 【Proteus仿真】【32单片机-A008】MPX4115压力检测系统设计
  • Linux环境防火墙常用配置说明
  • UGUI源代码之Text—实现自定义的字间距属性
  • AutoModelForCausalLM 解析,因果模型
  • 佛山网站优化运营/一键清理加速
  • 盐湖网站制作/高端网站优化公司
  • 源码做网站图文教程/seo点击工具
  • 安康网站建设公司电话/甘肃搜索引擎网络优化
  • 用vue做商城网站常用的js/济南seo培训
  • 专门做石材地花设计的网站/网页搜索优化