apache-spark - 为什么 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.
解决方案
由于 Spark Shell 用于交互式查询,因此 Spark Driver 必须在您的主机上运行(而不是作为集群内的容器)。也就是说,我们使用Spark Driver来连接集群,驱动程序是处理编程的接口——交互编程。
推荐阅读
- java - 倒数计时器在 3 秒后开始第一次滴答
- r - 如何在r中以欧洲格式将月份添加到日期?
- java - 我可以在 Kafka 处理器中拥有本地状态吗?
- php - ajax php 更新 mysql
- arrays - 使用花哨的索引从 Numpy 数组中查找和删除全零列
- angular - 具有 Moment 日期格式的 Angular 6 matDatepicker
- ruby - 检索深度嵌套散列的递归函数
- envoyproxy - 我可以使用 envoyproxy 作为分区感知负载均衡器吗
- powerbi - 返回汇总数据的 DAX 方式
- java - Android MP Chart highlightValue 不起作用,抛出 ArrayIndexOutOfBoundsException