《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 转换为执行计划
任务在集群上调度和执行

相关文章
|
消息中间件 分布式计算 大数据
大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源
大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源
236 0
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
734 79
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
1070 6
|
分布式计算 监控 大数据
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction
301 0
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
737 2
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
652 1
|
消息中间件 资源调度 大数据
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器
331 0
|
SQL 分布式计算 大数据
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
277 0
|
9月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
599 14