文章目录
每日一句正能量
又回到了原点,就从现在开始我的新生活吧。
章节概要
章节概要:Spark运行架构与原理
I. 引言
A. 概述Spark
B. Spark的特点和优势
II. Spark运行架构概述
A. Spark集群模式
B. Spark运行模式
C. Spark执行引擎:Spark Core
D. Spark计算模块:RDD
E. Spark数据抽象模块:DataFrame和Dataset
F. Spark资源管理器:Cluster Manager
G. Spark任务调度器:DAG调度器
III. Spark运行原理
A. Spark的分布式计算模型
B. Spark的任务划分与调度
C. Spark的数据分区与数据本地性
D. Spark的内存管理与数据持久化
E. Spark的容错机制与数据可靠性保障
IV. Spark运行架构实例分析
A. Spark Standalone模式运行架构
- 架构概述
- 运行流程分析
- 执行资源管理控制
B. Spark on YARN模式运行架构 - 架构概述
- 运行流程分析
- YARN资源管理控制
C. Spark on Mesos模式运行架构 - 架构概述
- 运行流程分析
- Mesos资源管理控制
V. 总结和展望
A. 对Spark运行架构和原理的总结
B. 对Spark未来发展的展望
在本章节中,我们将首先介绍Spark的运行架构和原理的基本概念和要点。接着,我们将深入探讨Spark的运行原理、数据抽象模块、资源管理器和任务调度器等关键组件的工作原理和实现方式。然后,我们将通过实际的运行架构实例分析,来具体了解Spark在不同的集群模式下的运行架构和工作流程。最后,我们将对Spark的运行架构和原理进行总结,并展望其未来发展的方向和趋势。本章节的内容将帮助读者全面了解Spark的运行架构和原理,从而更好地应用和优化Spark程序。
2.3 Spark运行架构与原理
2.3.1 基本概念
在学习Spark运行架构与工作原理之前,首先需要了解几个重要的概念和术语。
- Application(应用) Spark上运行的应用。Application中包含一个驱动器进程和集群上的多个执行器进程。
- Driver Program(驱动器) 运行main()方法并创建SparkContext的进程。
- Cluster Manager(集群管理器) 用于在集群上申请资源的外部服务(如:独立部署的集群管理器、Mesos或者Yarn)。
- Worker Node(工作节点) 集群上运行应用程序代码的任意一个节点。
- Executor(执行器) 在集群工作节点上为某个应用启动的工作进程,该进程负责运行计算任务,并为应用程序存储数据。
- Task(任务) 运行main()方法并创建SparkContext的进程。
- Job(作业) 一个并行计算作业,由一组任务组成,并由Spark的行动算子(如:save、collect)触发启动。
- Stage(阶段) 每个Job可划分为更小的Task集合,每组任务被称为Stage
2.3.2 Spark集群运行架构
Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,下面通过下图深入了解Spark运行基本流程。
Spark应用在集群.上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够 与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor) ,用于执行计算任务和存储数据。
每个Spark应用程序都有其对应的多个执行器进程。执行器进程在整个应用程序生命周期内,都保持运行状态,并以多线程方式执行任务。
驱动器程序在整个生命周期内必须监听并接受其对应的各个执行器的连接请求,因此驱动器程序必须能够被所有Worker节点访问到。
因为集群上的任务是由驱动器来调度的,所以驱动器应该放在离集群Worker节点比较近的机器上。
2.3.3 Spark运行基本流程
通过上一小节了解到,Spark运行架构主要由SparkContext、 Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节 点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间。Spark应用在集群上作为独立的进程组来运行,具体运行流程如下所示。
- 当一个Spark应用被提交时, 根据提交参数在相应位置创建Driver进程,Driver进程根据配置 参数信息初始化SparkContext对象,即Spark运行环境, 由SparkContext负责和Cluster Manager的通信以及资源的申请、任务的分配和监控等。SparkContext启动后, 创建DAG Scheduler (将DAG图分解成Stage)和Task Scheduler (提交和监控Task)两个调度模块。
- Driver进程根据配置参数向Cluster Manager申请资源(主要是用来执行的Executor),Cluster Manager接收到应用(Application) 的注册请求后,会使用自己的资源调度算法,在Spark集群的Worker节点 上,通知Worker为应用启动多个Executor。
- Executor创建后, 会向Cluster Manager进行资源及状态的反馈,便于Cluster Manager对Executor进行状态监控,如果监控到Executor失败,则会立刻重新创建。
- Executor会向SparkContext反向注册申请Task。
- Task Scheduler将Task发送给Worker进程中的Executor运行并提供应用程序代码。
- 当程序执行完毕后写入数据,Driver向Cluster Manager注销申请的资源。
转载自:https://blog.csdn.net/u014727709/article/details/132168348
欢迎 👍点赞✍评论⭐收藏,欢迎指正
版权归原作者 想你依然心痛 所有, 如有侵权,请联系我们删除。