栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark On Yarn环境原理

Spark On Yarn环境原理

一、Spark on YARN的优势

如果spark程序是运行在yarn上面的话,那么就不需要spark 的集群了,只需要找任意一台机器配置我们的spark的客户端提交任务到yarn集群上面去即可。

二、Spark On Yarn本质

将Spark任务的pyspark文件,经过Py4J转换,提交到Yarn的JVM中去运行

三、Spark ON YARN需要的东西

Yarn集群提交工具:spark-submit命令被提交的PySpark代码:Spark任务的文件需要其他依赖jar:Yarn的JVM运行PySpark的代码经过Py4J转化为字节码,需要Spark的jar包支持!Spark安装目录中有jar包,在spark/jars/中 五、Spark on YARN的两种部署模式 一、介绍

当一个MR应用提交运行到Hadoop YARN上时包含两个部分:应用管理者AppMaster和运行应用进程Process(如MapReduce程序MapTask和ReduceTask任务),如下图所示:

当一个Spark应用提交运行在集群上时,应用架构有两部分组成:Driver Program(资源申请和调度Job执行)和Executors(运行Job中Task任务和缓存数据),都是JVM Process进程:

而Driver程序运行的位置可以通过–deploy-mode 来指定,值可以是:

client:表示Driver运行在提交应用的Client上(默认)、cluster:表示Driver运行在集群中(Standalone:Worker,YARN:NodeManager) 二、client模式

DeployMode为Client,表示应用Driver Program运行在提交应用Client主机上,示意图如下:

# 运行圆周率PI程序,采用client模式,命令如下:
SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit 
--master yarn 
--deploy-mode client 
--driver-memory 512m 
--executor-memory 512m 
--executor-cores 1 
--num-executors 2 
--queue default 
--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 
10

三、YARN Client模式详细流程

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

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

DeployMode为Cluster,表示应用Driver Program运行在集群从节点某台机器上,示意图如下:

# 运行圆周率PI程序,采用cluster模式,命令如下:
${SPARK_HOME}/bin/spark-submit 
--master yarn 
--deploy-mode cluster 
--driver-memory 512m 
--executor-memory 512m 
--executor-cores 1 
--num-executors 2 
--queue default 
--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 
10


五、YARN Cluster详细流程

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

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

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

Client模式:学习测试时使用,开发不用

Driver运行在Client上,和集群的通信成本高Driver输出结果会在客户端显示 Cluster模式:生产环境中使用该模式

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/729103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号