搭建Spark On YARN集群

零、本讲学习目标

  • 学会搭建Spark On YARN模式的集群
  • 能够将Spark应用程序提交到集群运行

一、Spark On YARN架构

  • Spark On
    YARN模式遵循YARN的官方规范,YARN只负责资源的管理和调度,运行哪种应用程序由用户自己实现,因此可能在YARN上同时运行MapReduce程序和Spark程序,YARN很好地对每一个程序实现了资源的隔离。这使得Spark与MapReduce可以运行于同一个集群中,共享集群存储资源与计算资源。Spark
    On YARN模式与Standalone模式一样,也分为client和cluster两种提交方式。

(一)client提交方式

  • Spark On
    YARN的client提交方式提交应用程序后的主要进程有:SparkSubmit、ResourceManager、NodeManager、CoarseGrainedExecutorBackend、ExecutorLauncher,运行架构如下图所示:
    在这里插入图片描述

  • 与Standalone模式的client提交方式类似,客户端会产生一个名为SparkSubmit的进程,Driver程序则运行于该进程中,且ResourceManager的功能类似于Standalone模式的Master;NodeManager的功能类似于Standalone模式的Worker。当Spark程序运行时,ResourceManager会在集群中选择一个NodeManager进程启动一个名为ExecutorLauncher的子进程,该子进程是Spark的自定义实现,承担YARN中的ApplicationMaster角色,类似MapReduce的MRAppMaster进程。

  • 使用Spark On YARN的client提交方式提交Spark应用程序的执行步骤
    (1)客户端向YARN的ResourceManager提交Spark应用程序。客户端本地启动Driver。
    (2)ResourceManager收到请求后,选择一个NodeManager节点向其分配一个Container,并在该Container中启动ApplicationMaster(指ExecutorLauncher进程),该ApplicationMaster中不包含Driver程序,只负责启动和监控Executor(指CoarseGrainedExecutorBackend进程),并与客户端的Driver进行通信。
    (3)ApplicationMaster向ResourceManager申请Container。ResourceManager收到请求后,向ApplicationMaster分配Container。
    (4)ApplicationMaster请求NodeManager,NodeManager在获得的Container中启动CoarseGrainedExecutorBackend。
    (5)CoarseGrainedExecutorBackend启动后,向客户端的Driver中的SparkContext注册并申请Task。
    (6)CoarseGrainedExecutorBackend得到Task后,开始执行Task,并向SparkContext汇报执行状态和进度等信息。

(二)cluster提交方式

  • Spark On
    YARN的cluster提交方式提交应用程序后的主要进程有:SparkSubmit、ResourceManager、NodeManager、CoarseGrainedExecutorBackend、ApplicationMaster,运行架构如下图所示:
    在这里插入图片描述

  • 与Standalone模式的cluster提交方式类似,客户端仍然会产生一个名为SparkSubmit的进程,且ResourceManager的功能类似于Standalone模式的Master;NodeManager的功能类似于Standalone模式的Worker。ResourceManager会在集群中选择一个NodeManager进程启动一个名为ApplicationMaster的子进程,该子进程即为Driver进程(Driver程序运行在其中),同时作为一个YARN中的ApplicationMaster向ResourceManager申请资源,进一步启动Executor(这里指CoarseGrainedExecutorBackend)以运行Task。

  • 使用Spark On YARN的cluster提交方式提交Spark应用程序的执行步骤
    (1)客户端向YARN的ResourceManager提交Spark应用程序。
    (2)ResourceManager收到请求后,选择一个NodeManager节点向其分配一个Container,并在该Container中启动ApplicationMaster,ApplicationMaster中包含SparkContext的初始化。
    (3)ApplicationMaster向ResourceManager申请Container。ResourceManager收到请求后,向ApplicationMaster分配Container。
    (4)ApplicationMaster请求NodeManager,NodeManager在获得的Container中启动CoarseGrainedExecutorBackend。
    (5)CoarseGrainedExecutorBackend启动后,向ApplicationMaster的Driver中的SparkContext注册并申请Task(这一点与Spark On YARN的client方式不一样)。
    (6)CoarseGrainedExecutorBackend得到Task后,开始执行Task,并向SparkContext汇报执行状态和进度等信息。

二、搭建Spark On YARN集群

(一)搭建Spark Standalone集群

  • Spark On
    YARN模式的搭建比较简单,仅需要在YARN集群的一个节点上安装Spark即可,该节点可作为提交Spark应用程序到YARN集群的客户端。Spark本身的Master节点和Worker节点不需要启动。
  • 使用此模式需要修改Spark配置文件spark-env.sh,添加Hadoop相关属性,指定Hadoop与配置文件所在目录
    在这里插入图片描述
    在这里插入图片描述
export JAVA_HOME=/usr/local/jdk1.8.0_162
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

  • 存盘退出后,执行命令:source spark-env.sh,让配置生效
    在这里插入图片描述

三、提交Spark应用到集群运行

(一)启动HDFS和YARN

  • 执行命令:start-dfs.sh
    在这里插入图片描述

  • 执行命令:start-yarn.sh
    在这里插入图片描述

(二)运行Spark应用程序

  • 查看Spark应用程序$SPARK_HOME/examples/jars/spark-examples_2.11-2.1.1.jar
    在这里插入图片描述

  • 以Spark On YARN的cluster模式运行Spark应用程序

  • 进入Spark安装目录,执行命令

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.11-2.1.1.jar

  • 注意:tracking URL:
    http://master:8088/proxy/application_1651184694326_0001/
  • 程序执行过程中,可在YARN的ResourceManager对应的WebUI中查看应用程序执行的详细信息
  • 浏览器中通过http://master:8088来访问YARN的WebUI
    在这里插入图片描述

(三)查看应用程序运行结果

  • Spark On
    YARN的cluster模式运行Spark应用不会将结果打印到控制台,可在上图WebUI中单击application_1651184694326_0001超链接,在Application详情页面的最下方单击Logs超链接,然后在新页面中单击stdout所属超链接,即可显示输出日志,而运行结果则在日志中,整个查看日志的过程如下所示。
    在这里插入图片描述

  • 单击Logs超链接
    在这里插入图片描述

  • 单击stdout : Total file length is 33 bytes.超链接,即可查看到Spark应用的运行结果
    在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值