学习或者复习一门技术之前需要认识这个技术包括这个技术的特点、架构、它是怎么运作的、它能在哪里运行等然后可以学习怎么使用它开放的API对一些业务场景进行开发实现其次对于某些特定场景我们可能使用到一些高级特性。本文先带大家对spark有一个整体概念上的认识和了解。文章目录一. spark概述1. spark的特点2. spark的知识范畴二. spark架构1. spark的架构抽象2. spark的成员角色与相关基础概念三. Spark支持的运行模式1. standalone模式2. spark on yarn一. spark概述1. spark的特点a. spark是继Hadoop的MapReduce之后最具影响的大数据框架之一。与Hadoop相比Spark基于Mapreduce将计算的中间结果内存化并引入DAG有向无环图执行引擎。是对Mapreduce的重大改进中间数据压缩保存到内存运算时间会比磁盘低两个数量级。是对RDD的建模描述了RDD之间的依赖关系。b. Spark生态系统是以Spark coreRDD为核心提供计算框架。无论是Spark SQL、Spark Streaming、GraphX还是MLlib都可以使用Spark核心API处理问题它们的方法几乎是通用的处理的数据也可以共享对数据的无缝集成大大提高了灵活性。Spark最核心的数据结构只有一种RDDResilient Distributed Dataset弹性分布式数据集从API上来说它和普通集合几乎完全相同但是它却抽象了分布式文件系统中的文件可以说RDD是一个分布式的集合。c. 微批的流计算Spark Streaming将流式计算分解成一系列短小的批处理计算并且提供高可靠和吞吐量服务。d. 函数式编程思想函数式接口Spark API同样提供了map、reduce、filter等算子operator来构建数据处理管道用户的业务逻辑以高阶函数的形式定义用户通过高阶函数与算子之间的组合像搭积木一样构建了整个作业的执行计划。惰性求值Spark的算子分为两类转换transform算子和行动action算子只有行动算子才会真正触发整个作业提交并运行。容错spark job由一个个算子结合起来算子之间的依赖称为血缘。通过保存血缘关系和上游数据集当下游出现问题时可利用这两者进行计算恢复。这利用了函数血缘依赖在给定参数上游数据的情况下一定能得到既定输出下游数据的特性。2. spark的知识范畴二. spark架构1. spark的架构抽象官网Cluster Mode OverviewSpark是主从架构如下图是spark高层次的架构抽象。在Spark的架构中Driver主要负责作业调度工作Executor主要负责执行具体的作业计算任务ClusterManager主要负责资源管理和调度。Spark applications run as independent sets of processes on a cluster, coordinated by the SparkContext object in your main program (called the driver program).Specifically, to run on a cluster, the SparkContext can connect to several types of cluster managers (either Spark’s own standalone cluster manager, Mesos, YARN or Kubernetes), which allocate resources across applications. Once connected, Spark acquires executors on nodes in the cluster, which are processes that run computations and store data for your application. Next, it sends your application code (defined by JAR or Python files passed to SparkContext) to the executors. Finally, SparkContext sends tasks to the executors to run.2. spark的成员角色与相关基础概念Driver:用于创建运行时环境和管理任务执行具体的运行Application的main函数并创建SparkContext创建SparkContext的目的是为了准备Spark应用程序的运行环境。SparkContext负责与ClusterManager通信进行资源申请、任务的分配和监控等当Executor部分运行完毕后Driver同时负责将SparkContext关闭。Executor:运行Spark的Task。worker节点上的一个进程 该进程负责运行某些Task 并且负责将数据存到内存或磁盘上每个Application都有各自独立的一批Executor。Cluter Manager指的是在集群上获取资源的外部服务。目前有四种类型:Standalone : spark原生的资源管理由Master负责资源的分配Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架Hadoop Yarn: 主要是指Yarn中的ResourceManagerK8sTaskspark job的工作单元被送到某个Executor上的工作单元多个Task组成一个Stage而Task的调度和管理等是由TaskScheduler负责Stage每个Job会被拆分成多组Task作为一个TaskSet称为Stage。Stage的划分和调度由DAGScheduler来负责的Stage的边界就是发生shuffle的地方。DAGScheduler根据Job构建基于Stage的DAGDirected Acyclic Graph有向无环图)并提交Stage给TaskScheduler。TaskScheduler调度、管理taskSet将TaskSET提交给worker运行每个Executor运行什么Task就是在此处分配的.TaskScheduler维护所有TaskSet当Executor向Driver报告心跳时TaskScheduler会根据资源剩余情况分配相应的Task。另外TaskScheduler还维护着所有Task的运行标签重试失败的Task。三. Spark支持的运行模式1. standalone模式standalone是Spark实现的资源调度框架由客户端、Master节点和多个Worker节点组成。 其中SparkContext既可以运行在Master节点上也可以运行在客户端。任务提交流程大概的流程是Client提交任务启动SparkContext并向Master注册jobMaster返回资源列表给client并通知Worker创建ExecutorExecutor创建完毕之后反向注册给Master和DriverDriver发送任务给ExecutorExecutor开始执行任务ExecutorCoarseGrainedExecutorBackend把任务的执行状态发送给SparkContext如果有taskSet执行完毕SparkContext会继续发送其他任务集当job运行完之后SparkContext进行资源回收。上面的描述简化了一些角色的活动过程接下来继续查看创建sparkContext的过程包括初始化DAGScheduler 和 TaskScheduler调度器SparkDeploySchedulerBackend以及在其内部启动DriverEndpoint 和 ClientEndpoint。其中ClientEndpoint用于向Master注册应用程序DriverEndpoint用于发送任务给work中的executorDAGScheduler根据宽依赖将job划分成多个Stage每个Stage创建一个TaskSet并将TaskSet提交给TaskSchedulerTaskScheduler用于接收TaskSet并发送给Executor。如果某个任务失败 任务调度器负责重新分配该任务的计算。Executor的创建和执行Master返回资源列表给client端后通知Worker中的WorkerEndpoint创建CoarseGrainedExecutorBackend进程。该进程会创建执行容器Executor在Executor运行过程中 CoarseGrainedExecutorBackend粗粒度执行后端汇报执行情况给SparkContext。2. spark on yarn大致流程客户端提交应用到RMRM找一个节点创建ApplicationMaster接着AM向RM申请资源RM返回资源列表并选取nodemanager在其Container中创建Spark执行器对象Executor。Executor创建好后通知AM可以将任务发送过来AM分解任务并发送给Executor开始执行任务。Executor向AM汇报任务的执行情况当任务执行结束之后AM申请注销资源。
企业数字化 ERP 产品动态
相关推荐
表现效果集合 包含项目中用到的和自己学习的其他人或者其他文章的效果
自制的
瓶装水随机锥体生成浅表水纹UI闪电链框选shader
类似于微信截图的框选,在图片中画出一个框选框莫比乌斯环萤火切面湖水
主要功能有水纹扰动,菲涅尔cubemap反射,水深色开始高度&… · 2026/11/3 1:11:03
【源码|编译】flink 12 源码编译及使用idea运行、debug /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:11:03
netboot.xyz 网络启动故障排除指南:从通电到装机的完整排障路线 netboot.xyz 网络启动故障排除指南:从通电到装机的完整排障路线 【免费下载链接】netboot.xyz Your favorite operating systems in one place. A network-based bootable operating system installer based on iPXE. 项目地址: https://gitcode.com/gh_mirrors/n… · 2026/11/3 1:39:16
无需人工标注!AndroidGen-GLM-4-9B重构安卓智能交互新范式 无需人工标注!AndroidGen-GLM-4-9B重构安卓智能交互新范式
导语
你还在为AI助手无法跨应用完成复杂任务而烦恼?智谱AI最新开源的AndroidGen-GLM-4-9B模型,首次实现大语言模型在安卓系统全场景的自主任务执行,无需人工标注交互数… · 2026/11/3 1:39:16
SenseNova-Vision-7B-MoT核心功能解析:图像理解与多模态对话的终极指南 SenseNova-Vision-7B-MoT核心功能解析:图像理解与多模态对话的终极指南
SenseNova-Vision-7B-MoT是一款强大的多模态AI模型,融合了先进的视觉理解与自然语言处理能力,为用户提供精准的图像分析和流畅的对话交互体验。该模型基于70亿参数规模… · 2026/11/3 1:39:16
vLLM加速BU-30B-A3B-Preview:提升10倍推理速度的配置与优化技巧 vLLM加速BU-30B-A3B-Preview:提升10倍推理速度的配置与优化技巧
BU-30B-A3B-Preview是一款具备SoTA Browser Use能力的轻量级模型,可在单GPU上部署运行。它基于Qwen/Qwen3-VL-30B-A3B-Instruct构建,拥有300亿总参数(其中30亿为活… · 2026/11/3 1:38:16
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18