Spark on YARN 部署搭建详细图文教程

这篇具有很好参考价值的文章主要介绍了Spark on YARN 部署搭建详细图文教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、引言 

二、SparkOnYarn 本质

2.1 Spark On Yarn 的本质?

2.2 Spark On Yarn 需要啥?

三、配置 spark on yarn 环境

3.1 spark-env.sh 

3.2 连接到 YARN 中

3.2.1 bin/pyspark

3.2.2 bin/spark-shell

3.2.3 bin/spark-submit (PI)

四、部署模式 DeployMode 

4.1 Cluster 模式

4.2 Client 模式

4.3 两种模式的区别 

4.4 测试 

4.4.1 client 模式测试  

4.4.2 cluster 模式测试  

4.5 两种模式总结 

五、两种模式详细流程 

5.1 Client 模式 

5.2 Cluster 模式 


 

一、引言 

        按照前面环境部署中所了解到的,如果我们想要一个稳定的生产 Spark 环境,那么最优的选择就是构建 HA StandAlone 集群。

        不过在企业中,服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有 Hadoop 集群,也就是会有 YARN 集群。

        对于企业来说,在已有 YARN 集群的前提下在单独准备 Spark StandAlone 集群,对资源的利用就不高,所以在企业中,多数场景下,会将 Spark 运行到 YARN 集群中。

        YARN 本身是一个资源调度框架,负责对运行在内部的计算框架进行资源调度管理.。作为典型的计算框架,Spark 本身也是直接运行在 YARN 中,并接受 YARN 的调度的。所以,对于 Spark On YARN 无需部署 Spark 集群,只要找一台服务器,充当 Spark 的客户端,即可提交任务到 YARN 集群中运行。

二、SparkOnYarn 本质

2.1 Spark On Yarn 的本质?

  • Master 角色由 YARN 的 ResourceManager 担任。
  • Worker 角色由 YARN 的 NodeManager 担任。
  • Driver 角色运行在 YARN 容器内或提交任务的客户端进程中。
  • 真正干活的 Executor 运行在 YARN 提供的容器内。

2.2 Spark On Yarn 需要啥?

  1. 需要 Yarn 集群:已经安装了
  2. 需要 Spark 客户端工具,比如 spark-submit,可以将 Spark 程序提交到 YARN 中
  3. 需要被提交的代码程序:如 spark/examples/src/main/python/pi.py 此示例程序,或我们后续自己开发的 Spark 任务

spark yarn模式部署,Spark,spark,java,javascript

三、配置 spark on yarn 环境

3.1 spark-env.sh 

具体安装 spark 步骤:Spark-3.2.4 高可用集群安装部署详细图文教程_Stars.Sky的博客-CSDN博客 

        确保:HADOOP_CONF_DIR、YARN_CONF_DIR 在 spark-env.sh 以及环境变量配置文件中即可(其他的配置文件都不需要修改,切 spark 和 YARN 在同一机器上):

(base) [root@hadoop01 /bigdata/spark-3.2.4]# vim conf/spark-env.sh 
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/
YARN_CONF_DIR=/bigdata/hadoop/server/hadoop-3.2.4/etc/hadoop/

3.2 连接到 YARN 中

3.2.1 bin/pyspark

bin/pyspark --master yarn --deploy-mode client|cluster

# --deploy-mode 选项是指定部署模式,默认是客户端模式
# client 就是客户端模式
# cluster 就是集群模式
# --deploy-mode 仅可以用在 YARN 模式下

spark yarn模式部署,Spark,spark,java,javascript注意:交互式环境 pyspark  和 spark-shell  无法运行 cluster 模式。

3.2.2 bin/spark-shell

bin/spark-shell --master yarn --deploy-mode client|cluster

注意:交互式环境 pyspark  和 spark-shell  无法运行 cluster 模式。 

3.2.3 bin/spark-submit (PI)

bin/spark-submit --master yarn --deploy-mode client|cluster /xxx/xxx/xxx.py 参数

四、部署模式 DeployMode 

        Spark On YARN 是有两种运行模式的,一种是 Cluster 模式,一种是 Client 模式。这两种模式的区别就是 Driver 运行的位置:

  • Cluster 模式即:Driver 运行在 YARN 容器内部,和 ApplicationMaster 在同一个容器内。
  • Client 模式即:Driver 运行在客户端进程中,比如 Driver 运行在 spark-submit 程序的进程中。

4.1 Cluster 模式

如图,此为 Cluster 模式 Driver运行在容器内部:

spark yarn模式部署,Spark,spark,java,javascript

4.2 Client 模式

如图,此为Client 模式 Driver 运行在客户端程序进程中(以 spark-submit 为例) :

spark yarn模式部署,Spark,spark,java,javascript

4.3 两种模式的区别 

spark yarn模式部署,Spark,spark,java,javascript

4.4 测试 

4.4.1 client 模式测试  

假设运行圆周率 PI 程序,采用 client 模式,命令如下: 

(base) [root@hadoop01 /bigdata/spark-3.2.4]# bin/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /bigdata/spark-3.2.4/examples/src/main/python/pi.py 10
  • bin/spark-submit: 这是用于提交 Spark 任务的脚本。

  • --master yarn: 指定 Spark 集群管理器为 YARN。

  • --deploy-mode client: 这意味着 Spark 任务的 driver 程序将在客户端机器(即你提交命令的机器)上运行。

  • --driver-memory 512m: 分配给 driver 的内存为 512 MB。

  • --executor-memory 512m: 每个 Spark executor 使用 512 MB 内存。

  • --num-executors 2: 指定 Spark 应使用 2 个 executor 进程。

  • --total-executor-cores 2: 指定所有 executors 合计可使用的 CPU 核心数为 2。

  • /bigdata/spark-3.2.4/examples/src/main/python/pi.py: 这是你要运行的 Python 程序的路径。

  • 10: 这是传递给 pi.py 程序的一个参数。具体来说,这通常用于指定计算π值时的迭代次数或精度。 

日志跟随客户端的标准输出流进行输出:

spark yarn模式部署,Spark,spark,java,javascript

4.4.2 cluster 模式测试  

假设运行圆周率 PI 程序,采用 cluster 模式,命令如下: 

(base) [root@hadoop01 /bigdata/spark-3.2.4]# bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 512m --num-executors 2 --total-executor-cores 2 /bigdata/spark-3.2.4/examples/src/main/python/pi.py 10

客户端是无日志信息和结果输出的: 

spark yarn模式部署,Spark,spark,java,javascript

4.5 两种模式总结 

Client 模式和 Cluster 模式最最本质的区别是:Driver 程序运行在哪里。

Client 模式:学习测试时使用,生产不推荐(要用也可以,性能略低,稳定性略低)

  1. Driver 运行在 Client上,和集群的通信成本高
  2. Driver 输出结果会在客户端显示

Cluster模式:生产环境中使用该模式

  1. Driver 程序在 YARN 集群中,和集群的通信成本低
  2. Driver 输出结果不能在客户端显示
  3. 该模式下 Driver 运行 ApplicattionMaster 这个节点上,由 Yarn 管理,如果出现问题,yarn 会重启 ApplicattionMaster(Driver) 

五、两种模式详细流程 

5.1 Client 模式 

在 YARN Client 模式下,Driver 在任务提交的本地机器上运行,示意图如下: 

spark yarn模式部署,Spark,spark,java,javascript具体流程步骤如下:

  1. Driver 在任务提交的本地机器上运行,Driver 启动后会和 ResourceManager 通讯申请启动 ApplicationMaster;
  2. 随后 ResourceManager 分配 Container,在合适的 NodeManager 上启动ApplicationMaster,此时的 ApplicationMaster 的功能相当于一个 ExecutorLaucher,只负责向 ResourceManager 申请 Executor 内存;
  3. ResourceManager 接到 ApplicationMaster 的资源申请后会分配 Container,然后ApplicationMaster 在资源分配指定的 NodeManager 上启动 Executor 进程;
  4. Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行 main函数;
  5. 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 Stage,每个 Stage 生成对应的 TaskSet,之后将 Task 分发到各个 Executor 上执行。 

5.2 Cluster 模式 

        在 YARN Cluster 模式下,Driver 运行在 NodeManager Contanier 中,此时 Driver 与 AppMaster 合为一体,示意图如下:

spark yarn模式部署,Spark,spark,java,javascript

具体流程步骤如下:

  1. 任务提交后会和 ResourceManager 通讯申请启动 ApplicationMaster;
  2. 随后 ResourceManager 分配 Container,在合适的 NodeManager 上启动 ApplicationMaster,此时的 ApplicationMaster 就是 Driver;
  3. Driver 启动后向 ResourceManager 申请 Executor 内存,ResourceManager 接到ApplicationMaster 的资源申请后会分配 Container,然后在合适的 NodeManager 上启动Executor 进程;
  4. Executor 进程启动后会向 Driver 反向注册;
  5. Executor 全部注册完成后 Driver 开始执行 main 函数,之后执行到 Action 算子时,触发一个 job,并根据宽依赖开始划分 stage,每个 stage 生成对应的 taskSet,之后将 task 分发到各个 Executor 上执行。

上一篇文章:Spark-3.2.4 高可用集群安装部署详细图文教程_Stars.Sky的博客-CSDN博客 文章来源地址https://www.toymoban.com/news/detail-734884.html

到了这里,关于Spark on YARN 部署搭建详细图文教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spark单机伪分布式环境搭建、完全分布式环境搭建、Spark-on-yarn模式搭建

    搭建Spark需要先配置好scala环境。三种Spark环境搭建互不关联,都是从零开始搭建。 如果将文章中的配置文件修改内容复制粘贴的话,所有配置文件添加的内容后面的注释记得删除,可能会报错。保险一点删除最好。 上传安装包解压并重命名 rz上传 如果没有安装rz可以使用命

    2024年02月06日
    浏览(83)
  • Spark on Yarn 最佳运行参数调优-计算方式_spark on yarn 调优 nodemanager

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月26日
    浏览(44)
  • 《PySpark大数据分析实战》-12.Spark on YARN配置Spark运行在YARN上

    📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。 通过了微软Azure开发人员、Azure数据工程师、Azure解决

    2024年02月03日
    浏览(55)
  • kyuubi整合spark on yarn

    目标: 1.实现kyuubi spark on yarn 2.实现 kyuubi spark on yarn 资源的动态分配 注意:版本 kyuubi 1.8.0 、 spark 3.4.2 、hadoop 3.3.6 前置准备请看如下文章 文章 链接 hadoop一主三从安装 链接 spark on yarn 链接 官网下载地址 官方文档 修改配置文件 三千五百万 主键id单笔获取 非主键 count 测试 差

    2024年04月08日
    浏览(40)
  • Spark on Yarn模式下执行过程

    Driver Application启动 Driver Application启动:用户提交的Spark Application在YARN上启动一个ApplicationMaster(即Driver Application)进程来管理整个应用程序的生命周期,并向ResourceManager请求资源。 获得资源 Driver Application向ResourceManager请求可用的资源(CPU核数、内存等),并等待接收到资源

    2024年02月01日
    浏览(49)
  • Spark On YARN时指定Python版本

    坑很多,直接上兼容性最佳的命令,将python包上传到 hdfs 或者 file:/home/xx/ (此处无多余的 / ) 具体细节 关于 Python包 打包可以参考 https://www.jianshu.com/p/d77e16008957,https://blog.csdn.net/sgyuanshi/article/details/114648247 非官方的python,比如 anaconda的python可能会有坑 ,所以最好先用官方版本

    2023年04月18日
    浏览(42)
  • Spark On Yarn的两种运行模式

    Spark On YARN是有两种运行模式:Cluster模式、Client模式 Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内。 Client模式即:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中。 Client模式详细流程 YARN Client模式下,Driver在任务提交的本地机器上运

    2024年02月02日
    浏览(50)
  • 【大数据监控】Grafana、Spark、HDFS、YARN、Hbase指标性能监控安装部署详细文档

    Grafana 是一款开源的数据可视化工具,使用 Grafana 可以非常轻松的将数据转成图表(如下图)的展现形式来做到数据监控以及数据统计。 解压 配置 mapping 文件 修改spark的metrics.properties配置文件,让其推送metrics到Graphite_exporter namenode.yaml datanode.yaml 配置 hadoop-env.sh yarn.yaml 配置 ya

    2023年04月21日
    浏览(58)
  • Hadoop YARN HA 集群安装部署详细图文教程

    目录 一、YARN 集群角色、部署规划 1.1 集群角色--概述 1.2 集群角色--ResourceManager(RM)  1.3 集群角色--NodeManager(NM)  1.4 HA 集群部署规划 二、YARN RM 重启机制 2.1 概述  2.2 演示  2.2.1 不开启 RM 重启机制现象  2.3 两种实现方案与区别  2.3.1 Non-work-preserving RM restart 2.3.2 

    2024年02月04日
    浏览(52)
  • spark on yarn 的 executor、cores、driver 作用及配置

    参数意义 spark on yarn 的常用提交命令如下: num-executors 指要使用的 executor 的数量。 executor-memory 指每个 executor 分配的内存大小。 executor-cores 指每个 executor 的分配的 cpu core 数量。 driver-memory 指 driver 分配的内存大小。 提交的应用程序在 AM 中运行起来就是一个 driver,它构建

    2023年04月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包