Spark 的 Yarn-cluster 模式和 Yarn-client 模式

Spark 支持 Yarn 集群的部署模式,在 Spark On Yarn 模式下,每一个 Spark 的 Executor 做为一个 Yarn container 在运行,同事支持多个任务在同一个 container 中运行。html

Yarn 的 Application Master 概念:在 Yarn 中,每一个 application 都有一个 Application 都有一个 Application Master 进程,它是 Application 启动的第一个容器,负责从 ResourceManager 中申请资源,分配资源,同时通知 NodeManager 来为 Application 启动 Container。web

Spark On Yarn 有两种模式,一种是 Yarn-client 模式,一种是 Yarn-cluster 模式。通常状况下,Yarn-client 模式使用在调试模式下,Yarn-cluster 模式使用在生产环境中。app

1,Yarn-cluster 模式

在 Yarn-cluster 模式下,driver 运行在 Appliaction Master 上,Appliaction Master 进程同时负责驱动 Application 和从 Yarn 中申请资源,该进程运行在 Yarn container 内,因此启动 Application Master 的 client 能够当即关闭而没必要持续到 Application 的生命周期,下图是 Yarn-cluster 模式:oop

Yarn-cluster

在 Yarn-cluster 模式中,当用户向 Yarn 中提交一个应用程序后,Yarn 将分两个阶段运行该应用程序:调试

  1. 第一个阶段是把 Spark 的 driver 做为一个 ApplicationMaster 在 Yarn 集群中先启动;
  2. 第二个阶段是由 ApplicationMaster 建立应用程序,而后为它向 ResourceManager 申请资源,并启动 Executor 来运行 Task,同时监控它的整个运行过程,直到运行完成。

应用的运行结果不能在客户端显示(能够在 history server 中查看),因此最好将结果保存在 HDFS 而非 stdout 输出,客户端的终端显示的是做为 Yarn 的 job 的简单运行情况。cdn

2,Yarn-client 模式

在 Yarn-client 中,driver 运行在 client 上,经过 ApplicationMaster 向 RM 获取资源。本地 driver 负责与全部的 executor container 进行交互,并将最后的结果汇总。结束掉终端,至关于 kill 掉这个 Spark 应用。由于 driver 在客户端,因此能够经过 webUI 访问 driver 的状态,默认是 http://hadoop1:4040 访问,而 Yarn 经过 http:// hadoop1:8088 访问。工做流程以下图:server

Yarn-client模式

具体的执行流程以下图所示:htm

具体执行流程

对比两种模式能够看出一点,Yarn-client 模式下的 driver 进程执行在本地机器上,而 Yarn-cluster 模式下的 driver 进程执行在 Yarn 集群上面。blog

参考:www.cnblogs.com/ITtangtang/…生命周期

相关文章
相关标签/搜索