spark架构和RDD相关概念

发布于:2025-04-10 ⋅ 阅读:(41) ⋅ 点赞:(0)

 运行架构:

         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 保存。

 


网站公告

今日签到

点亮在社区的每一天
去签到