spark运行架构

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

Spark运行架构

 

1. 运行架构  

   Spark采用标准的masterslave结构:  

    Driver:作为master,负责执行Spark任务的main方法,管理作业调度、任务分配、Executor跟踪及UI展示。  

    Executor:作为slave,是Worker节点中的JVM进程,负责运行具体任务(Task),并将结果返回给Driver。Executor通过块管理器(Block Manager)缓存RDD数据,加速计算。  

 

2. 核心组件  

    Master & Worker:在独立部署环境中,Master负责资源调度和集群监控(类似YARN的RM),Worker负责数据处理(类似YARN的NM)。  

    ApplicationMaster:在YARN环境中,解耦ResourceManager(资源)和Driver(计算),负责申请资源、监控任务状态及处理异常。  

 

3. 核心概念  

    Executor与Core:Executor是计算节点,可通过参数指定其内存和CPU核数。  

    并行度(Parallelism):集群并行执行任务的数量,可动态调整。  

    有向无环图(DAG):Spark程序的拓扑结构,将计算逻辑映射为图形化依赖关系,支持Job内部的DAG划分和实时计算。  

 

4. 提交流程(YARN模式)  

    Client模式:Driver在本地运行,适用于测试。  

    Cluster模式:Driver在YARN集群中运行,适用于生产环境。  

   流程包括:申请资源、启动ApplicationMaster、分配Executor、任务划分(Job→Stage→Task)及任务分发。  

 

 

 

 第四节 RDD相关概念

 

1. RDD定义  

   RDD(弹性分布式数据集)是Spark的基本数据处理模型,特性包括:  

    弹性:自动容错、计算重试、存储切换、动态分片。  

    分布式:数据跨节点存储。  

    不可变:通过生成新RDD实现数据转换。  

    可分区:支持并行计算。  

 

2. 核心属性  

    分区列表、分区计算函数、RDD依赖关系、分区器(可选)、首选位置(可选)。  

 

3. 执行原理  

   Spark先申请资源,将逻辑分解为任务并分发到Executor执行。RDD封装计算逻辑,生成Task传递给Executor。  

 

4. RDD序列化  

    闭包检测:确保算子外数据可序列化。  

    Kryo序列化:高效序列化框架,速度是Java序列化的10倍。  

 

5. 依赖关系  

    窄依赖:父RDD的每个分区最多被子RDD的一个分区依赖(独生子女)。  

    宽依赖:父RDD的分区被多个子RDD依赖,引发Shuffle(多生)。  

    阶段划分:DAG根据宽依赖划分Stage,任务分为Application→Job→Stage→Task。  

 

6. 持久化  

    Cache/Persist:缓存数据到内存或磁盘,血缘关系保留。  

    Checkpoint:将数据写入HDFS等可靠存储,切断血缘关系,适合长依赖链场景。  

 

7. 分区器  

    Hash分区:按key的哈希值分配分区(默认)。  

    Range分区:按key范围均匀分配,保证有序性。  

 

8. 文件读写  

   支持多种格式(text、sequence、object文件)和系统(本地、HDFS、HBase等)。 3


网站公告

今日签到

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