当前位置:   article > 正文

Spark基础入门-第五章:环境搭建-Spark on YARN

spark on yarn

Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。下面就带大家来学习今天的内容!

  往期内容:


引言

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

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

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

YARN本身是一个资源调度框架, 负责对运行在内部的计算框架进行资源调度管理。

作为典型的计算框架, Spark本身也是直接运行在YARN中, 并接受YARN的调度的。

所以, 对于Spark On YARN, 无需部署Spark集群, 只要找一台服务器, 充当Spark的客户端, 即可提交任务到YARN集群 中运行。

一、SparkOnYarn本质

Spark On Yarn的本质?

Master角色由YARN的ResourceManager担任。

Worker角色由YARN的NodeManager担任。

Driver角色运行在YARN容器内 或 提交任务的客户端进程中,真正干活的Executor运行在YARN提供的容器内。

二、配置spark on yarn环境

此部分直接参考<<spark部署文档.doc>> 即可

三、部署模式DeployMode

Spark On YARN是有两种运行模式的,一种是Cluster模式一种是Client模式.

这两种模式的区别就是Driver运行的位置.

Cluster模式即:Driver运行在YARN容器内部, 和ApplicationMaster在同一个容器内

Client模式即:Driver运行在客户端进程中, 比如Driver运行在spark-submit程序的进程中

(1) Cluster模式

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

(2) Client模式

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

(3)两种模式的区别

(4)client 模式测试

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

SPARK_HOME=/export/server/spark

${SPARK_HOME}/bin/spark-submit \

--master yarn \

--deploy-mode client \

--driver-memory 512m \

--executor-memory 512m \

--num-executors 1 \

--total-executor-cores 2 \

${SPARK_HOME}/examples/src/main/python/pi.py \

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

(5) cluster 模式测试

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

SPARK_HOME=/export/server/spark

${SPARK_HOME}/bin/spark-submit \

--master yarn \

--deploy-mode cluster \

--driver-memory 512m \

--executor-memory 512m \

--num-executors 1 \

--total-executor-cores 2 \

--conf "spark.pyspark.driver.python=/root/anaconda3/bin/python3" \

--conf "spark.pyspark.python=/root/anaconda3/bin/python3" \

${SPARK_HOME}/examples/src/main/python/pi.py \

四、Spark On Yarn两种模式总结

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

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

1.Driver运行在Client上,和集群的通信成本高

2.Driver输出结果会在客户端显示

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

1.Driver程序在YARN集群中,和集群的通信成本低

2.Driver输出结果不能在客户端显示

3.该模式下Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题, yarn会重启

ApplicattionMaster(Driver)

五、扩展阅读:两种模式详细流程

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

具体流程步骤如下:

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上执行。

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

具体流程步骤如下:

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上执行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/551119
推荐阅读
相关标签
  

闽ICP备14008679号