天天看点

Spark 中 Yarn 运行模式

简介

spark 的 yarn 运行模式根据 Driver 在集群中的位置分成两种:

1)yarn-client 客户端模式

2)yarn-cluster 集群模式

yarn 模式和 standalone 模式不同,standalone 模式需要启动 spark 独立集群,这样 SparkContext 才能与 Master 进行交互通信。而 yarn 模式的资源管理全部托管给的 ResourceManager 了,所以它不需要启动 spark 独立集群,那么也就意味着你无法访问 http://master:8080 这个页面了。

yarn 集群模式

spark 的 yarn 集群模式,Driver 运行在 Application Master 上,Application Master 进程同时负责驱动我们的代码程序和从 ResourceManager 申请资源。由于它直接运行在 yarn 的 Container 当中,所以并不需要客户端,客户端可以在提交完毕之后就关闭,如图:

Spark 中 Yarn 运行模式

1)客户端将生成作业信息并提交给 ResourceManager

2)ResourceManager 会选择一个 NodeManager 去启动 container,并且把 ApplicationMaster 分配给它去运行

3)NodeManager 接收到以后就会启动 ApplicationMaster 并初始化 dag 作业,此时 NodeManager 就成为 Driver

4)ApplicationMaster 向 ResourceManager 申请资源

5)ResourceManager 分配资源的同时通知其它 NodeManager 启动相应的 executor 去执行 task,并反馈执行情况

6)执行完毕,释放资源

yarn 客户端模式

yarn 客户端模式和 yarn 集群模式的区别很明显,就是在于 ApplicationMaster 仅仅负责从 ResourceManager 申请资源,而驱动代码程序的任务还是由 Client 客户端负责,所以 Client 客户端在整个过程中保持运行不会像集群模式一样提交完就关闭,如图:

Spark 中 Yarn 运行模式

1)客户端生成作业信息并提交给 ResourceManager

2)ResourceManager 在本地 NodeManager 启动 container 并分配运行 ApplicationMaster

3)Client 节点会初始化 dag 作业,通过 ApplicationMaster 去向 ResourceManager 申请资源

4)Client 节点将任务分发给 executor 去执行,executor 反馈执行情况

5)任务执行完毕,释放资源

yarn-client 和 yarn-cluster 的区别

1)在 yarn-cluster 模式中,Driver 运行在 ApplicationMaster 上,而在 yarn-client 模式中 Driver 运行在 Client 上

2)yarn-cluster 模式中,Client 提交完可以直接关闭,yarn-client 模式中保持运行并和 executor 通信

3)yarn-cluster 模式中,ApplicationMaster 负责资源申请和驱动程序运行,yarn-client 模式中只负责资源申请,运行程序由 Client 负责

4)yarn-cluster 适合生产环境,而 yarn-client 适合交互和调试

继续阅读