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

简介:

本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第3章,第3.3节,作者:文卡特·安卡姆(Venkat Ankam) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 Spark 程序的生命周期

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

(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 程序的调度过程:
image

3.3.1 流水线
在某些情况下,各阶段的物理集合不一定会完全和逻辑 RDD 图做到 1:1 对应。当无需移动数据就能根据其父节点计算出 RDD 时,就可以产生流水线。例如,当用户顺序地调用 map 和 filter 时,那些调用就可以被折叠成单个变换,它先映射再过滤每个元素。但是,复杂的 RDD 图会由 DAG 调度器划分为多个阶段。
利用 1.4 及更高版本的 Spark 管理界面,Spark 的事件时间轴和 DAG 可视化变得容易了。让我们执行以下代码来查看一个作业及其各阶段的 DAG 可视化:
image

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

3.3.2 Spark 执行的摘要
在此简要说明 Spark 执行摘要:
用户代码定义 RDD 的 DAG(有向无环图)
动作强制将 DAG 转换为执行计划
任务在集群上调度和执行

相关文章
|
2月前
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
183 3
|
1月前
|
机器学习/深度学习 分布式计算 大数据
Spark 适合解决多种类型的大数据处理问题
【9月更文挑战第1天】Spark 适合解决多种类型的大数据处理问题
42 3
|
2月前
|
存储 分布式计算 大数据
MaxCompute 数据分区与生命周期管理
【8月更文第31天】随着大数据分析需求的增长,如何高效地管理和组织数据变得至关重要。阿里云的 MaxCompute(原名 ODPS)是一个专为海量数据设计的计算服务,它提供了丰富的功能来帮助用户管理和优化数据。本文将重点讨论 MaxCompute 中的数据分区策略和生命周期管理方法,并通过具体的代码示例来展示如何实施这些策略。
117 1
|
2月前
|
分布式计算 大数据 Apache
跨越界限:当.NET遇上Apache Spark,大数据世界的新篇章如何谱写?
【8月更文挑战第28天】随着信息时代的发展,大数据已成为推动企业决策、科研与技术创新的关键力量。Apache Spark凭借其卓越的分布式计算能力和多功能数据处理特性,在大数据领域占据重要地位。然而,对于.NET开发者而言,如何在Spark生态中发挥自身优势成为一个新课题。为此,微软与Apache Spark社区共同推出了.NET for Apache Spark,使开发者能用C#、F#等语言编写Spark应用,不仅保留了Spark的强大功能,还融合了.NET的强类型系统、丰富库支持及良好跨平台能力,极大地降低了学习门槛并拓展了.NET的应用范围。
57 3
|
2月前
|
分布式计算 大数据 数据处理
Apache Spark的应用与优势:解锁大数据处理的无限潜能
【8月更文挑战第23天】Apache Spark以其卓越的性能、易用性、通用性、弹性与可扩展性以及丰富的生态系统,在大数据处理领域展现出了强大的竞争力和广泛的应用前景。随着大数据技术的不断发展和普及,Spark必将成为企业实现数字化转型和业务创新的重要工具。未来,我们有理由相信,Spark将继续引领大数据处理技术的发展潮流,为企业创造更大的价值。
|
2月前
|
分布式计算 Hadoop 大数据
Spark 与 Hadoop 的大数据之战:一场惊心动魄的技术较量,决定数据处理的霸权归属!
【8月更文挑战第7天】无论是 Spark 的高效内存计算,还是 Hadoop 的大规模数据存储和处理能力,它们都为大数据的发展做出了重要贡献。
71 2
|
2月前
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
66 0
|
2月前
|
存储 分布式计算 资源调度
Hadoop生态系统概览:从HDFS到Spark
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。
75 0
|
2月前
|
大数据 RDMA
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
神龙大数据加速引擎MRACC问题之MRACC-Spark利用eRDMA近网络优化插件来提升性能如何解决
36 0
|
2月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
49 0