Sot*_*her 7 cluster-computing apache-spark pyspark
我正在尝试修复内存不足的问题,我想知道是否需要spark-defaults.conf在spark home文件夹中的默认配置文件()中更改这些设置.或者,如果我可以在代码中设置它们.
我看到了这个问题PySpark:java.lang.OutofMemoryError:Java堆空间,它说它取决于我是否在client模式下运行.我在集群上运行spark并使用独立监控它.
但是,我怎么弄清楚我是否在client模式下运行spark ?
如果您正在运行交互式shell,例如pyspark(CLI或通过IPython笔记本),默认情况下您正在以client模式运行.您可以在模式下轻松验证无法运行pyspark或任何其他交互式shell cluster:
$ 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.
Run Code Online (Sandbox Code Playgroud)
检查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" "$@"
Run Code Online (Sandbox Code Playgroud)
ie pyspark实际上是一个脚本运行spark-submit并给出了名称PySparkShell,您可以在Spark History Server UI中找到它; 并且因为它是这样运行的,所以它的spark-submit命令包括任何参数(或默认值).
由于sc.deployMode在PySpark中不可用,您可以查看spark.submit.deployMode
scala> sc.getConf.get("spark.submit.deployMode")
res0: String = client
Run Code Online (Sandbox Code Playgroud)
使用 sc.deployMode
scala> sc.deployMode
res0: String = client
scala> sc.version
res1: String = 2.1.0-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)