《Spark与Hadoop大数据分析》——3.3 Spark 程序的生命周期

3.3 Spark 程序的生命周期

以下步骤讲解了配备 Standalone 资源管理器的 Spark 应用程序的生命周期,图3-8 显示了Spark程序的调度过程:

(1)用户使用 spark-submit 命令提交一个 Spark 应用程序。
(2)spark-submit 在同一节点(客户端模式)或集群(集群模式)上启动驱动进程,并调用由用户指定的 main 方法。
(3)驱动进程联系集群管理器,根据提供的配置参数来请求启动执行进程 JVM 所需的资源。
(4)集群管理器在工作机节点上启动执行进程 JVM。
(5)驱动进程扫描用户应用程序。根据程序中的 RDD 动作和变换,Spark 会创建一个运算图。
(6)当调用一个动作(如 collect)时,图会被提交到一个有向无环图(DAG)调度程序。DAG 调度程序将运算图划分成一些阶段。
(7)一个阶段由基于输入数据分区的任务组成。DAG 调度程序会通过流水线把运算符连一起,从而优化运算图。例如,很多映射(map)运算符可以调度到一个阶段中。这种优化对 Spark 的性能是很关键的。DAG 调度程序的最终结果是一组阶段。
(8)这些阶段会被传递到任务调度程序。任务调度程序通过集群管理器(Spark Standalone / Yarn / Mesos)启动任务。任务调度器并不知道阶段之间的依赖性。
(9)任务在执行进程上运行,从而计算和保存结果。
(10)如果驱动进程的 main 方法退出,或者它调用了 SparkContext.stop(),它就会终止执行进程并从集群管理器释放资源。

图3-8描述了 Spark 程序的调度过程:

从内部来看,每个任务会执行相同的步骤:

让我们来了解在 Spark 中使用的术语,然后再进一步深入探讨 Spark 程序的生命周期:

3.3.1 流水线

在某些情况下,各阶段的物理集合不一定会完全和逻辑 RDD 图做到 1:1 对应。当无需移动数据就能根据其父节点计算出 RDD 时,就可以产生流水线。例如,当用户顺序地调用 map 和 filter 时,那些调用就可以被折叠成单个变换,它先映射再过滤每个元素。但是,复杂的 RDD 图会由 DAG 调度器划分为多个阶段。

利用 1.4 及更高版本的 Spark 管理界面,Spark 的事件时间轴和 DAG 可视化变得容易了。让我们执行以下代码来查看一个作业及其各阶段的 DAG 可视化:

图3-9 显示了上面的单词计数代码作业及其各阶段的可视化 DAG。它显示作业被分为两个阶段,因为在这种情况下发生了数据的混排。

图3-10 显示了阶段 0 的事件时间轴,它指明了每个任务所用的时间。

3.3.2 Spark 执行的摘要

在此简要说明 Spark 执行摘要:

时间: 2024-09-15 17:25:50

《Spark与Hadoop大数据分析》——3.3 Spark 程序的生命周期的相关文章

《Spark与Hadoop大数据分析》一一导读

Preface 前 言 本书讲解了Apache Spark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起.所有Spark组件(Spark Core.Spark SQL.DataFrame.Dataset.Conventional Streaming.Structured Streaming.MLlib.GraphX和Hadoop核心组件).HDFS.MapReduce和Yarn 都在 Spark + Hadoop 集群的实现示例中进行了深入的探讨. 大数据分

《Spark与Hadoop大数据分析》——导读

前 言 本书讲解了Apache Spark和Hadoop的基础知识,以及如何通过简单的方式将它们与最常用的工具和技术集成在一起.所有Spark组件(Spark Core.Spark SQL.DataFrame.Dataset.Conventional Streaming.Structured Streaming.MLlib.GraphX和Hadoop核心组件).HDFS.MapReduce和Yarn 都在 Spark + Hadoop 集群的实现示例中进行了深入的探讨. 大数据分析行业正在从 M

《Spark与Hadoop大数据分析》——1.3 工具和技术

1.3 工具和技术 让我们来看看在 Hadoop 和 Spark 中用于大数据分析的不同工具和技术. 虽然 Hadoop 平台可以用于存储和处理数据,但 Spark 只能通过将数据读入内存来进行处理. 下表展示了典型大数据分析项目中所使用的工具和技术.

《Spark与Hadoop大数据分析》一一3.3 Spark 程序的生命周期

3.3 Spark 程序的生命周期 以下步骤讲解了配备 Standalone 资源管理器的 Spark 应用程序的生命周期,图3-8 显示了Spark程序的调度过程: (1)用户使用 spark-submit 命令提交一个 Spark 应用程序. (2)spark-submit 在同一节点(客户端模式)或集群(集群模式)上启动驱动进程,并调用由用户指定的 main 方法. (3)驱动进程联系集群管理器,根据提供的配置参数来请求启动执行进程 JVM 所需的资源. (4)集群管理器在工作机节点上启动

《Spark与Hadoop大数据分析》一一第3章 深入剖析Apache Spark

第3章 深入剖析Apache Spark Apache Spark 的技术.社区和用户群都在快速增长.2015 年推出了两个新的API:DataFrame API 和 DataSet API.这两个 API 构建在基于 RDD 的核心 API 之上.我们有必要了解 RDD 的更深层概念,包括运行时的架构和它在 Spark 各种资源管理器上的表现.本章分为以下子主题:启动 Spark 守护进程Spark 的核心概念键值对 RDDSpark 程序的生命周期Spark 应用程序持久化和缓存Spark

《Spark与Hadoop大数据分析》——1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色

1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色 传统的数据分析使用关系型数据库管理系统(Relational Database Management System,RDBMS)的数据库来创建数据仓库和数据集市,以便使用商业智能工具进行分析.RDBMS 数据库采用的是写时模式(Schema-on-Write)的方法,而这种方法有许多缺点. 传统数据仓库的设计思想是用于提取.转换和加载(Extract, Transform, and Load,ETL)数据,据此回答与用户需求

《Spark与Hadoop大数据分析》一一

3.1 启动 Spark 守护进程 如果你计划使用 Standalone 的集群管理器,则需要启动 Spark 的主机(master)和工作机(worker)的守护进程(daemon),它们是 Spark 架构的核心组件.守护进程的启动/停止在不同的发行版里略有差异.Hadoop 发行版(如 Cloudera.Hortonworks 和 MapR)会把 Spark 作为服务,并把 YARN 作为默认的资源管理器.这意味着在默认情况下所有 Spark 应用程序都会在 YARN 框架上运行.但是,要

《Spark与Hadoop大数据分析》一一第1章 从宏观视角看大数据分析

第1章 从宏观视角看大数据分析 本书的目标是让你熟悉 Apache Spark用到的工具和技术,重点介绍Hadoop平台上使用的Hadoop部署和工具.大多数Spark的生产环境会采用Hadoop集群,用户在集成 Spark和Hadoop配套的各种工具时会遇到很多挑战.本书将讲解Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和另一种资源协商器(Yet Another Resource Negotiator,YARN)面临的集成挑战,以及Spa

《Spark与Hadoop大数据分析》——3.1 启动 Spark 守护进程

3.1 启动 Spark 守护进程 如果你计划使用 Standalone 的集群管理器,则需要启动 Spark 的主机(master)和工作机(worker)的守护进程(daemon),它们是 Spark 架构的核心组件.守护进程的启动/停止在不同的发行版里略有差异.Hadoop 发行版(如 Cloudera.Hortonworks 和 MapR)会把 Spark 作为服务,并把 YARN 作为默认的资源管理器.这意味着在默认情况下所有 Spark 应用程序都会在 YARN 框架上运行.但是,要