Spark核心知识总结

一、Spark运行架构

(一)整体结构

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

(二)核心组件

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

  2. Executor:集群工作节点中的JVM进程,运行具体任务且任务相互独立。负责运行任务并返回结果,通过块管理器缓存RDD数据加速运算。

  3. Master & Worker:在独立部署环境中,Master负责资源调度分配和集群监控,Worker在服务器上处理计算任务。

  4. ApplicationMaster:在YARN集群中,负责申请资源、运行任务、监控任务状态和处理异常。

(三)核心概念

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

  2. 并行度:集群并行执行任务的数量,默认由框架配置,也可在运行时修改。

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

(四)提交流程(基于Yarn环境)

  1. Yarn Client模式:Driver在本地机器运行,向ResourceManager申请启动ApplicationMaster,由其申请Executor内存并启动Executor进程,Executor反向注册后Driver执行main函数,遇到Action算子触发Job并分发任务。

  2. Yarn Cluster模式:任务提交后申请启动的ApplicationMaster就是Driver,后续流程与Client模式类似。

二、Spark RDD相关概念

(一)RDD概述

  1. 定义:弹性分布式数据集,是Spark基本数据处理模型,具有弹性、分布式、不可变等特性。

  2. 核心属性:包含分区列表、分区计算函数、依赖关系、分区器(可选)、首选位置(可选)。

(二)执行原理

在Yarn环境中,启动集群后,Spark申请资源创建调度和计算节点,将计算逻辑划分为任务,调度节点根据节点状态发送任务到计算节点执行。

(三)RDD序列化

  1. 闭包检查:检测算子外数据能否序列化,确保可在Executor端执行。

  2. 序列化方法和属性:算子外代码在Driver端执行,算子内代码在Executor端执行。

  3. Kryo序列化框架:比Java序列化速度快10倍,Shuffle时部分数据已使用Kryo序列化,但仍需继承Serializable接口。

(四)RDD依赖关系

  1. 血缘关系:记录RDD元数据和转换行为,用于恢复丢失分区。

  2. 窄依赖与宽依赖:窄依赖指父RDD分区最多被子RDD一个分区使用;宽依赖指父RDD分区被多个子RDD分区依赖,会引发Shuffle。

  3. 阶段与任务划分:DAG记录RDD转换和任务阶段,Application、Job、Stage和Task之间是1对n关系。

(五)RDD持久化

  1. Cache缓存:默认缓存在JVM堆内存,触发action算子时缓存,缓存丢失可重算。

  2. CheckPoint检查点:将RDD中间结果写入磁盘,切断血缘依赖,提高容错性。

  3. 区别:Cache不切断血缘,可靠性低;CheckPoint切断血缘,数据存储在高可用文件系统。建议对CheckPoint的RDD使用Cache缓存。

(六)RDD分区器

支持Hash分区、Range分区和自定义分区,Hash分区为默认分区。只有Key - Value类型RDD有分区器,分区器决定分区个数和数据分配。

(七)RDD文件读取与保存

可处理text、csv、sequence、object等文件格式,支持本地文件系统、HDFS、HBASE和数据库等文件系统进行数据读取和保存。

相关推荐
在未来等你1 天前
Elasticsearch面试精讲 Day 13:索引生命周期管理ILM
大数据·分布式·elasticsearch·搜索引擎·面试
Elastic 中国社区官方博客1 天前
Elasticsearch:智能搜索的 MCP
大数据·人工智能·elasticsearch·搜索引擎·全文检索
未来之窗软件服务1 天前
浏览器开发CEFSharp+X86 (十六)网页读取电子秤数据——仙盟创梦IDE
大数据·智能硬件·浏览器开发·仙盟创梦ide·东方仙盟·东方仙盟网页调用sdk
roman_日积跬步-终至千里1 天前
【系统架构设计(24)】大型网站系统架构演化:从单体到分布式的技术进阶之路
分布式·系统架构
阿豪31 天前
2025 年职场转行突围:除实习外,这些硬核证书让你的简历脱颖而出(纯经验分享)
大数据·人工智能·经验分享·科技·信息可视化·产品经理
张驰课堂1 天前
老树发新芽:六西格玛培训为石油机械制造注入持久活力
大数据·人工智能·制造
卡卡_R-Python1 天前
大数据探索性分析——抽样技术应用
大数据·r
Luminbox紫创测控1 天前
稳态太阳光模拟器 | 多源分布式设计的要点有哪些?
分布式
伍哥的传说1 天前
Lodash-es 完整开发指南:ES模块化JavaScript工具库实战教程
大数据·javascript·elasticsearch·lodash-es·javascript工具库·es模块·按需导入
请提交用户昵称1 天前
大数据各组件flume,datax,presto,DolphinScheduler,findBI在大数据数仓架构中的作用和功能。
大数据·flume·datax·dolphin·presto·findbi·大数据组件