【问题标题】:Why do Spark shells (PySpark or Scala) run in client mode instead of cluster mode?为什么 Spark shell(PySpark 或 Scala)在客户端模式而不是集群模式下运行?
【发布时间】:2019-11-15 19:53:14
【问题描述】:

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

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

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

编辑
问题Spark-submit / spark-shell > difference between yarn-client and yarn-cluster mode 是相关的,但没有关注(并且答案没有涵盖)为什么shell 不能在集群模式下运行。

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

【问题讨论】:

  • @mazaneicha 这个问题是相关的,但它没有关注(并且答案没有涵盖)为什么 shell 不能在集群模式下运行。如果你碰巧知道,你能在答案中解释一下吗?
  • Shell 需要在您的(客户端)机器上运行才能接受输入。我认为得分最高的答案很清楚。
  • @mazaneicha 您说“Shell 需要在您的(客户端)机器上运行才能接受输入。”我认为这不能解决问题。它只是指出 shell 接受输入,这是众所周知的事实。你能进一步详细说明吗?一些 Jupyter PySpark 内核在集群模式下运行,但也是交互式的。

标签: apache-spark hadoop pyspark hadoop-yarn spark-shell


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-24
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多