我理解YARN上Spark应用程序的客户端和集群模式之间的主要区别。
主要差异包括
在两种相似的情况下
我的问题是 - 在现实场景(生产环境)中,我们不需要交互模式,客户端不需要长时间运行 - 集群模式是一个明显的选择吗?
客户端模式是否有任何好处,如:
答案 0 :(得分:2)
从文档中
常见的部署策略是从a。提交您的应用程序 与您的工作人员物理位置相同的网关机器 机器(例如独立EC2集群中的主节点)。在这 设置,客户端模式是合适的。在客户端模式下,驱动程序是 直接在客户端spark-submit进程中启动,用 连接到控制台的应用程序的输入和输出。从而, 此模式特别适用于涉及的模式 REPL(例如Spark shell)。
或者,如果您的应用程序是从远程机器提交的 从工作机器(例如,在您的笔记本电脑上本地),这是常见的 使用群集模式来最小化驱动程序之间的网络延迟 和遗嘱执行人。请注意,目前不支持群集模式 对于独立群集,Mesos群集或python应用程序。
看起来,主要原因是当我们从远程运行spark-submit时,为了减少执行程序和驱动程序之间的延迟,首选集群模式。
答案 1 :(得分:1)
根据我的经验,在生产环境中,唯一合理的模式是集群模式,有两个例外:
ssh
ssc.stop(stopGracefully = true)