《PySpark大数据分析实战》-13.Spark on YARN模式代码运行流程

本文详细介绍了PySpark在YARN模式下的运行流程,包括YARNClient和YARNCluster两种模式,解释了Driver、Executor和Task的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

📋 博主简介

  • 💖 作者简介:大家好,我是wux_labs。😜
    热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。
    通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。
    通过了微软Azure开发人员、Azure数据工程师、Azure解决方案架构师专家认证。
    对大数据技术栈Hadoop、Hive、Spark、Kafka等有深入研究,对Databricks的使用有丰富的经验。
  • 📝 个人主页:wux_labs,如果您对我还算满意,请关注一下吧~🔥
  • 📝 个人社区:数据科学社区,如果您是数据科学爱好者,一起来交流吧~🔥
  • 🎉 请支持我:欢迎大家 点赞👍+收藏⭐️+吐槽📝,您的支持是我持续创作的动力~🔥

《PySpark大数据分析实战》-13.Spark on YARN模式代码运行流程

前言

大家好!今天为大家分享的是《PySpark大数据分析实战》第2章第4节的内容:Spark on YARN模式代码运行流程。

图书在:当当京东机械工业出版社以及各大书店有售!

Spark on YARN模式代码运行流程

提交Spark应用程序运行,当master指定为yarn的时候,还可以指定另外一个选项:–deploy-mode,该选项支持两个选项client和cluster,当不指定该选项时默认是client。在client模式下,会在执行spark-submit命令的客户端启动Spark的Driver进程,所有Driver的操作都在客户端执行,比如在Driver进行print打印,print的结果会在客户端,YARN的Web界面上无法从日志中找到print的结果。在cluster模式下,YARN会进行资源调度,选择集群中的一个节点作为Spark的Master,在该节点启动Driver进程,Driver的操作都在该节点上执行,比如在Driver进行print打印,print的结果会在该节点的日志中,通过YARN的Web界面查看日志可以看到print的结果,而在执行spark-submit命令的客户端则看不到print的结果。

YARN Client模式代码运行流程

YARN Client模式的代码运行流程如图所示。

:在YARN集群启动后,NodeManager定期向ResourceManager汇报节点的资源信息、任务运行状态、健康信息等。

1:客户端通过spark-submit提交应用程序运行,首先会执行程序中的main()函数,在客户端启动Driver进程。

2:Driver进程启动后,会实例化SparkContext,SparkContext会向YARN集群的ResourceManager注册并申请ApplicationMaster。

3:ResourceManager收到请求后,会分配在一个资源满足条件的节点,该节点启动第1个Container容器,启动ApplicationMaster。

4:ApplicationMaster启动后,会与Driver中的SparkContext进行通信,获取任务信息等。

5:ApplicationMaster根据任务信息,向ResourceManager请求所需的资源。

6:ResourceManager根据申请分配资源,在集群的节点上启动Container。

7:ApplicationMaster获取到资源后,与NodeManager通信,并请求在Container中启动Executor。

8:Executor启动成功后,会反向注册到SparkContext,并申请Task。

9:SparkContext会向Executor分配Task,并与Executor保持通信,Executor会向Driver汇报Task的执行状态和进度,Driver掌握了Task的情况后可以在任务失败时重启任务。

10:当应用程序所有Task都执行完成, SparkContext会向ResourceManager注销自己,ResourceManager可以回收已分配的资源。

YARN Cluster模式代码运行流程

YARN Cluster模式的代码运行流程如图所示。

:在YARN集群启动后,NodeManager定期向ResourceManager汇报节点的资源信息、任务运行状态、健康信息等。

1:客户端通过spark-submit提交应用程序运行,首先会执行程序中的main()函数,并向ResourceManager申请ApplicationMaster。

2:ResourceManager收到请求后,会分配在一个资源满足条件的节点,该节点启动第1个Container容器,启动ApplicationMaster,并启动SparkContext,Cluster模式下Driver与ApplicationMaster合为一体。

3:ApplicationMaster启动后会根据任务信息向ResourceManager请求资源。

4:ResourceManager根据申请分配资源,在集群的节点上启动Container。

5:ApplicationMaster获取到资源后,与NodeManager通信,并请求在Container中启动Executor。

6:Executor启动成功后,会反向注册到SparkContext,并申请Task。

7:SparkContext会向Executor分配Task,并与Executor保持通信,Executor会向ApplicationMaster汇报Task的执行状态和进度,ApplicationMaster掌握了Task的情况后可以在任务失败时重启任务。

8:当应用程序所有Task都执行完成, SparkContext会向ResourceManager注销自己,ResourceManager可以回收已分配的资源。

结束语

好了,感谢大家的关注,今天就分享到这里了,更多详细内容,请阅读原书或持续关注专栏。

### Spark 入门教程 #### 了解 Apache Spark Apache Spark 是一种用于大规模数据处理的统一分析引擎,支持批量和实时数据处理。由于其高效的内存计算能力,Spark 成为了大数据处理领域的重要工具[^1]。 #### Spark 核心组件及架构解析 Spark 架构主要由以下几个部分组成: - **Driver Program**: 用户编写的 Spark 应用程序主函数,并构建 RDD, DataFrame 或 Dataset。 - **Cluster Manager**: 可以是 Spark 自带的独立调度器、YARN 或 Mesos 等外部管理器来分配资源给应用程序运行。 - **Executor**: 在工作节点上的进程负责执行具体任务并保存缓存的数据。 这种设计使得 Spark 不仅可以高效地处理批处理作业还能很好地适应流式处理场景。 #### Spark 环境配置与启动 对于初次使用者来说,在本地环境中安装 Java 和下载配置好 Spark 非常重要。完成这些前置条件之后便可以通过命令行启动 Spark Shell 来体验交互式的编程环境。 ```bash # 启动 Spark Shell (假设已设置 SPARK_HOME 环境变量) $SPARK_HOME/bin/spark-shell ``` #### 实战案例:使用 Spark 进行数据分析 ##### 准备数据 通常会先准备好要分析的数据集,比如 CSV 文件或其他格式文件。这里假设有这样一个简单的销售记录表作为例子。 ##### 编写 Spark 程序 下面是一个基于 PySpark 的 Python 版本读取上述提到的那种表格样式的文本文件的例子: ```python from pyspark.sql import SparkSession spark = SparkSession.builder.appName("SalesAnalysis").getOrCreate() df = spark.read.csv('path/to/sales_data.csv', header=True, inferSchema=True) df.show() ``` 这段代码创建了一个新的 `SparkSession` 并加载了一份带有标题行且自动推断模式结构的CSV文档为DataFrame对象以便后续操作[^3]。 ##### 执行结果 一旦完成了所有必要的转换动作后就可以调用诸如 `.show()`,`.collect()` 方法查看最终的结果了。这一步骤能够帮助确认之前所做的各种变换是否达到了预期效果。 #### Spark SQL 战胜传统数据库查询的优势 除了基本的操作外,还可以利用 Spark 提供的强大 SQL 支持来进行更复杂的查询。例如,可以在 IDEA 中集成 Spark-SQL 功能模块从而更加方便快捷地编写复杂查询语句。 #### Spark on Yarn 部署指南 如果打算在一个生产级别的 Hadoop 集群之上部署 Spark,则可以选择采用 Yarn 方式来做集群管理和任务调度。这种方式下的准备工作相对较为简便——只需将压缩包解压至各节点相同路径即可开始使用[^4]。 #### 观察 Spark 分布式环境状态 最后值得一提的是,当成功搭建起一套完整的 Spark 分布式系统以后,管理员们往往希望能够直观了解到当前系统的健康状况;这时就轮到了 Web UI 登场啦!它提供了丰富的监控指标让运维人员轻松掌握全局动态[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wux_labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值