Spark大数据分析与实战笔记(第二章 Spark基础-03)
每日一句正能量
又回到了原点,就从现在开始我的新生活吧。
章节概要
章节概要: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程序。
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注销申请的资源。
总结
Spark是一种分布式计算框架,提供了高效的数据处理能力和强大的计算功能。它的运行架构和原理可以总结如下:
-
Master-Worker架构:Spark的运行架构是基于Master-Worker模式的。在一个Spark集群中,有一个称为Spark Master的节点负责协调和管理整个集群,同时有多个称为Spark Worker的节点负责执行具体的计算任务。
-
弹性分布式数据集(RDD):Spark的核心概念是弹性分布式数据集(RDD)。RDD是一种可并行计算的数据结构,它可以在集群中的多个节点之间分布式地存储和处理数据。RDD具有容错性和可恢复性的特点,可以在节点失败时自动进行数据恢复。
-
DAG执行引擎:Spark使用DAG(Directed Acyclic Graph)执行引擎来执行并行计算任务。通过将计算任务表示为一系列有向无环图,Spark可以将计算任务分解为多个阶段(Stage),并在多个节点上并行执行这些阶段。
-
内存计算:与其他分布式计算框架相比,Spark具有更高的性能,部分原因是因为它使用了内存计算。Spark可以将数据存储在内存中,从而避免了频繁的磁盘读写操作,大大提高了计算速度。
-
Transformations和Actions:Spark提供了丰富的Transformations和Actions操作,用于对RDD进行转换和操作。Transformations操作会生成一个新的RDD,而Actions操作会触发计算并返回结果。这种惰性计算的方式可以提高Spark的效率,只有在需要时才会真正执行计算。
总的来说,Spark的运行架构和原理结合了Master-Worker模式、RDD、DAG执行引擎和内存计算等关键技术,实现了高效的分布式计算。通过灵活的数据处理能力和强大的计算功能,Spark成为了大数据处理的重要工具之一。
转载自:https://blog.csdn.net/u014727709/article/details/132168348
欢迎 👍点赞?评论?收藏,欢迎指正
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!