当前位置: 首页 > 知识库问答 >
问题:

如何知道PySpark应用程序的部署模式?

乜明朗
2023-03-14

我正在尝试修复内存不足的问题,我想知道是否需要更改spark home文件夹中默认配置文件(spark defaults.conf)中的这些设置。或者,如果我可以在代码中设置它们。

我看到了这个问题PySpark:java。lang.OutofMemoryError:Java堆空间,它说这取决于我是否在客户机模式下运行。我正在群集上运行spark,并使用standalone对其进行监视。

但是,如何确定我是否在客户机模式下运行spark?


共有3个答案

索嘉胜
2023-03-14

从Spark 2开始,以下工作。

for item in spark.sparkContext.getConf().getAll():print(item)

(u'spark.submit.deployMode', u'client') # will be one of the items in the list.
东门阳飇
2023-03-14

由于sc.deploy模式在PySpark中不可用,您可以检查spark.submit.deploy模式

scala> sc.getConf.get("spark.submit.deployMode")
res0: String = client

使用sc.deploy模式

scala> sc.deployMode
res0: String = client

scala> sc.version
res1: String = 2.1.0-SNAPSHOT
秦伯寅
2023-03-14

如果您正在运行交互式shell,例如pyspark(CLI或通过IPython笔记本),默认情况下您正在客户端模式下运行。您可以轻松验证您无法在集群模式下运行pyspark或任何其他交互式shell:

$ pyspark --master yarn --deploy-mode cluster
Python 2.7.11 (default, Mar 22 2016, 01:42:54)
[GCC Intel(R) C++ gcc 4.8 mode] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Error: Cluster deploy mode is not applicable to Spark shells.

$ spark-shell --master yarn --deploy-mode cluster
Error: Cluster deploy mode is not applicable to Spark shells.

检查bin/pyspark文件的内容也可能很有指导意义-下面是最后一行(实际可执行文件):

$ pwd
/home/ctsats/spark-1.6.1-bin-hadoop2.6
$ cat bin/pyspark
[...]
exec "${SPARK_HOME}"/bin/spark-submit pyspark-shell-main --name "PySparkShell" "$@"

i、 e.pyspark实际上是一个由spark submit运行的脚本,命名为PySparkShell,您可以在spark History Server UI中找到它;由于它是这样运行的,所以它会使用其spark submit命令中包含的任何参数(或默认值)。

 类似资料:
  • 问题内容: JAX-RS 1.1规范在第6页上说: 如果不存在Application子类,则必须将添加的servlet命名为: 添加的servlet是什么?可以是任意servlet吗? 如果存在Application子类,并且已经定义了一个servlet,该servlet的servlet初始化参数为: 同样,这里的“ servlet”是什么? 如果存在不由现有Servlet处理的Applicati

  • 我有一个数据库单例,我想在应用程序完成时对其调用.close()。 我可以在Application类中的onCreate()中对数据库调用.open(),但在哪里调用.close()呢?

  • Requirements 运行一个Spark Streaming应用程序,有下面一些步骤 有管理器的集群-这是任何Spark应用程序都需要的需求,详见部署指南 将应用程序打为jar包-你必须编译你的应用程序为jar包。如果你用spark-submit启动应用程序,你不需要将Spark和Spark Streaming打包进这个jar包。 如果你的应用程序用到了高级源(如kafka,flume),你需

  • 我正在研究Terraform以及如何使用它来设置AWS环境。到目前为止,我已经有了用3个公共子网、3个私有子网、一个互联网网关和3个Nat网关设置VPC的脚本。然而,我对如何在私有子网中部署和重新部署应用程序感到困惑? 在我的场景中,我们使用Spring Boot构建微服务。我们的想法是转移到一种状态,在这种状态下,我们可以将弹性负载平衡器连接到公共子网,并在私有子网中的自动缩放组中承载我们的应用

  • 问题内容: 我使用Spark Web框架创建了一个Web应用程序,但是我不知道如何部署该Web应用程序。很抱歉,如果这是非常基本的内容,但我是Spark框架的新手,找不到任何指导我如何部署Spark WebApp的文档。 如何独立部署Spark WebApp 如何构建spark webapp(用于war文件或此类文件)以及如何通过Web服务器(jetty或Tomcat)进行部署。 问题答案: 首先

  • 我似乎找不到任何关于如何在我的IBM Social Business SmartCloud站点中注册/部署应用程序的文档。这是在他们的云服务器上,而不是我自己的本地主机上。 我使用IBM SmartCloud Engage演示帐户订阅创建了一个Admin AppDeveloper用户帐户。我基本上是在尝试将HelloWorld iWidget添加到某个应用程序菜单中,但找不到注册/添加的位置,因此