Spark的Yarn Cluster部署模式的工作流程

YARN Cluster

由于YARN Cluster模式在企业中应用较为常见,所以重点学习下。

工作流程中各个组件的作用

想要了解YARN Cluster模式提交任务后的具体执行流程,就必须先熟悉流程中所涉及的对象主要是干什么工作的:

  1. ResourceManager(RM) :是Yarn集群的主控节点,负责协调和管理整个集群(所有NodeManager)的资源;
  2. NodeManager(NM):NM管理一个Yarn集群中的每一个节点。比如节点健康;
  3. ApplicationMaster(AM):先简单了解下AM的工作流程:我们向YARN集群提交应用程序时:(包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序)后,ApplicationMaster会向资源调度器(RM)申请执行任务的资源容器Container,运行用户自己的程序任务job(我们可以用浏览器看yarn里的job进展),监控整个任务的执行,跟踪整个任务的状态,处理失败任务的异常情况;
  4. Driver:
    注意在本文的模式中,Driver是运行在AM中的, 所以以下的功能也是属于AM的。
    1)将我们自己的程序转为任务;
    2)跟踪Executor的运行情况;
    3)为执行器节点(Executor)调度任务;
    4)将程序的运行情况展示到UI;
  5. Executor:
    1)负责运行组成spark应用的任务,并将结果返回给驱动器进程;
    2)它们还可以为用户程序中要求缓存的RDD提供内存式存储。
  6. Container:这是一个抽象概念,它代表所分配的“资源”,作为一个抽象容器,它将内存、CPU、磁盘、网络等资源封装在一起,这样可以起到限定资源边界的作用。

工作流程图

在这里插入图片描述

文字说明

  1. Spark Yarn Client向YARN中提交程序,包括包含ApplicationMaster程序,ApplicationMaster启动命令,我们自己的程序。
  2. ResourceManager收到请求后,在集群中选择一个NodeManager,为改应用程序分配第一个Container,分配完成之后,启动ApplicationMaster。
  3. ApplicationMaster向ResourceManager注册,并申请启动Executor的资源。
  4. ApplicationMaster申请到RM分配的资源后,便选择一个NodeManager,要求其在获取的Container中启动Executor。
  5. ApplicationMaster分配task给Executor执行,并监控任务执行的状态。
  6. 应用 程序执行完毕之后,Application向ResourceManager申请注销并关闭自己。

YARN-Cluster 与YARN-Client的不同之处

YARN-ClusterYARN-Client
Driver运行在NodeManager节点上Driver运行在本地机器上
没有网卡流量激增的问题由于Driver在本地机器上,所以大量负责spark任务的调度都集中在这台机器上,导致网卡流量激增
Yarn与driver在同一个机房,在性能上会更好一点通常来说,本地机器不会与Yarn集群在同一个机房,所以性能不会很好

总结

以上是YARN-Cluster部署模式的大体工作流程,如果想要印象深刻一点,推荐大家先记住所涉及的组件名称,然后自己画三遍流程图,画图的时候记得留意每个组件的作用,把整个流程串起来。如果想要更深入的学习,还需要结合网上的资料去研究源码。若发现不足之处,请大佬务必指出来,想要进步,就离不开各位帅气老师的反馈。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Spark on YARN的集群部署,您可以按照以下步骤进行操作: 1. 首先,确保已经安装和配置好Hadoop和YARN集群。确保YARN ResourceManager和NodeManager正在运行,并且集群配置正确。 2. 下载Spark二进制文件并解压缩到每个节点上。确保在所有节点上使用相同的Spark版本。 3. 在Spark的conf目录中,创建一个名为spark-env.sh的文件,并设置以下参数: ``` export HADOOP_CONF_DIR=<Hadoop配置目录> export YARN_CONF_DIR=<YARN配置目录> ``` 将 `<Hadoop配置目录>` 替换为Hadoop配置文件所在的目录路径,将 `<YARN配置目录>` 替换为YARN配置文件所在的目录路径。 4. 在Spark的conf目录中,打开spark-defaults.conf文件,并添加以下参数: ``` spark.master yarn spark.submit.deployMode cluster ``` 5. 根据您的需求,可以根据集群规模和资源分配需求,调整以下参数: ``` spark.executor.memory spark.executor.cores spark.executor.instances ``` 6. 您还可以根据需要设置其他SparkYARN相关的参数,如队列设置、日志级别等。 7. 在启动Spark应用程序之前,确保您的环境变量中包含Spark和Hadoop的bin目录。您可以将这些目录添加到PATH环境变量中。 8. 使用以下命令提交Spark应用程序: ``` ./bin/spark-submit --class <main-class> --master yarn --deploy-mode cluster <application-jar> [application-arguments] ``` 将 `<main-class>` 替换为您的应用程序的主类,将 `<application-jar>` 替换为您的应用程序的JAR文件路径。 9. Spark提交应用程序后,YARN将为您的应用程序启动相应的Executor,并将资源分配给它们。您可以使用YARN的Web界面或命令行工具来监视和管理Spark应用程序。 请注意,这只是Spark on YARN集群部署的基本步骤,您可能需要根据您的特定环境和需求进行一些调整和配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值