又回到了原点,就从现在开始我的新生活吧。
章节概要: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模式运行架构
1. 架构概述
2. 运行流程分析
3. 执行资源管理控制
B. Spark on YARN模式运行架构
1. 架构概述
2. 运行流程分析
3. YARN资源管理控制
C. Spark on Mesos模式运行架构
1. 架构概述
2. 运行流程分析
3. Mesos资源管理控制
V. 总结和展望
A. 对Spark运行架构和原理的总结
B. 对Spark未来发展的展望
在本章节中,我们将首先介绍Spark的运行架构和原理的基本概念和要点。接着,我们将深入探讨Spark的运行原理、数据抽象模块、资源管理器和任务调度器等关键组件的工作原理和实现方式。然后,我们将通过实际的运行架构实例分析,来具体了解Spark在不同的集群模式下的运行架构和工作流程。最后,我们将对Spark的运行架构和原理进行总结,并展望其未来发展的方向和趋势。本章节的内容将帮助读者全面了解Spark的运行架构和原理,从而更好地应用和优化Spark程序。
在学习Spark运行架构与工作原理之前,首先需要了解几个重要的概念和术语。
Spark运行架构主要由SparkContext、Cluster Manager和Worker组成,其中Cluster Manager负责整个集群的统一资源管理,Worker节点中的Executor是应用执行的主要进程,内部含有多个Task线程以及内存空间,下面通过下图深入了解Spark运行基本流程。
Spark应用在集群.上运行时,包括了多个独立的进程,这些进程之间通过驱动程序(Driver Program)中的SparkContext对象进行协调,SparkContext对象能够 与多种集群资源管理器(Cluster Manager)通信,一旦与集群资源管理器连接,Spark会为该应用在各个集群节点上申请执行器(Executor) ,用于执行计算任务和存储数据。
每个Spark应用程序都有其对应的多个执行器进程。执行器进程在整个应用程序生命周期内,都保持运行状态,并以多线程方式执行任务。
驱动器程序在整个生命周期内必须监听并接受其对应的各个执行器的连接请求,因此驱动器程序必须能够被所有Worker节点访问到。
因为集群上的任务是由驱动器来调度的,所以驱动器应该放在离集群Worker节点比较近的机器上。
通过上一小节了解到,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
欢迎 👍点赞?评论?收藏,欢迎指正