首页 > 解决方案 > 为什么 Spark shell(PySpark 或 Scala)在客户端模式而不是集群模式下运行?

问题描述

我一直了解 Spark shell,无论是 PySpark 还是 Scala,都在客户端模式下运行。如果我错了,请纠正我,没有开箱即用的配置可以在集群模式下使用它们。

为什么会这样?是什么让集群模式不适合这些交互式 shell?

客户端和驱动程序之间的网络延迟可能是一个因素。如果使用 YARN,初始启动时间可能会更长,因为驱动程序的集群资源需要从 YARN 资源管理器中提供。但在我看来,这两个因素并不是严重的阻碍因素。

编辑
问题Spark-submit / spark-shell > yarn-client 和 yarn-cluster 模式之间的区别是相关的,但不关注(并且答案不包括)为什么 shell 不能在集群模式下运行。

pyspark --deploy-mode cluster
Error: Cluster deploy mode is not applicable to Spark shells.

标签: apache-sparkhadooppysparkhadoop-yarnspark-shell

解决方案


由于 Spark Shell 用于交互式查询,因此 Spark Driver 必须在您的主机上运行(而不是作为集群内的容器)。也就是说,我们使用Spark Driver来连接集群,驱动程序是处理编程的接口——交互编程。


推荐阅读