Spark On Yarn两种部署模式介绍
- Spark On YARN是有两种运行模式:Cluster模式、Client模式
- Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内。
- Client模式即:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中。
Client模式
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上执行。
Client模式部署测试
- spark-sumbit提交程序为例,命令如下
bin/spark-submit --master yarn \
> --deploy-mode client \
> --driver-memory 512m \
> --executor-memory 512m \
> --num-executors 3 \
> --total-executor-cores 3 \
> /export/server/spark-3.2.0/examples/src/main/python/pi.py 100
- 执行完成之后可以再yarn界面中查看
- 因为任务提交完成之后我们打开spark4040查看,所以我们需要再jobhistory中查看spark job的运行信息,点击即可进入查看。
- 点击Executors之后可以看到以下信息,Executor有三个(之前命令设定的),而driver没有日志,是因为driver根本没有运行在yarn集群容器中,而是运行到了spark-submit所执行的客户端中。
Cluster模式
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上执行。
文章来源:https://www.toymoban.com/news/detail-433348.html
Cluster模式部署测试
- spark-sumbit提交程序为例,命令如下
bin/spark-submit --master yarn \
> --deploy-mode cluster \
> --driver-memory 512m \
> --executor-memory 512m \
> --num-executors 3 \
> --total-executor-cores 3 \
> /export/server/spark-3.2.0/examples/src/main/python/pi.py 100
- 结果并没有展示出来
- 按照之前的方法在进入jobhistory页面中的Executors去查找。因为Driver在cluster模式下运行在容器的内部了,被容器所控制,所以只能在yarn的容器中去查看结果输出。
- 同样我们在yarn界面中点击改程序,然后点击下方的logs也能查看到输出结果:
文章来源地址https://www.toymoban.com/news/detail-433348.html
Spark On Yarn两种模式的总结
- 两种模式的区别
Cluster | Yarn | |
---|---|---|
Driver运行位置 | YARN容器内 | 客户端进程 |
通讯效率 | 高 | 低 |
日志查看 | 日志输出在容器内,查看不方便 | 日志输出在客户端中,查看方便 |
生产环境可用性 | 推荐 | 不推荐 |
稳定性 | 稳定 | 受客户端进程影响,不稳定 |
- Client模式和Cluster模式最最本质的区别是Driver程序运行地点:
- Client模式(测试开发环境):
- Driver运行在Client上,和集群的通信成本高。
- Driver输出结果会在客户端显示。
- Cluster模式(生产环境):
- Driver程序在YARN集群中,和集群的通信成本低。
- Driver输出结果不能在客户端显示。
- Driver运行ApplicattionMaster这个节点上,由Yarn管理,如果出现问题,yarn会重启ApplicattionMaster(Driver)。
- Client模式(测试开发环境):
到了这里,关于Spark On Yarn的两种运行模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!