TL;DR:在 Spark Standalone 集群中,客户端和集群部署模式有什么区别?如何设置我的应用程序将在哪种模式下运行?
我们有一个包含三台机器的 Spark Standalone 集群,它们都使用 Spark 1.6.1:
- 一台主机,这也是我们的应用程序运行的地方
spark-submit
- 2台相同的工人机器
从Spark 文档中,我读到:
(...) 对于独立集群,Spark 目前支持两种部署模式。在客户端模式下,驱动程序与提交应用程序的客户端在同一进程中启动。然而,在集群模式下,驱动程序是从集群内的一个 Worker 进程启动的,并且客户端进程在完成提交应用程序的职责后立即退出,而无需等待应用程序完成。
但是,通过阅读本文,我并没有真正了解实际差异,也不知道不同部署模式的优缺点是什么。
此外,当我使用 start-submit 启动我的应用程序时,即使我将属性设置spark.submit.deployMode
为“cluster”,我的上下文的 Spark UI 也会显示以下条目:
所以我无法测试这两种模式以查看实际差异。话虽如此,我的问题是:
1)Spark Standalone客户端部署模式和集群部署模式的实际区别是什么?使用每一个的优点和缺点是什么?
2)我如何选择我的应用程序将在哪一个上运行,使用spark-submit
?