首页 > 解决方案 > 无法设置火花驱动器内存

问题描述

我正在从 Jupiter 笔记本构建一个 spark(在 Apache Spark 版本 2.4.3 上运行)会话,如下所示

spark_session  = SparkSession.builder
                      .master("yarn-client")
                      .enableHiveSupport()
                      .getOrCreate()

spark_session.conf.set("spark.executor.memory", '8g')
spark_session.conf.set('spark.executor.cores', '3')
spark_session.conf.set('spark.cores.max', '3')
spark_session.conf.set("spark.driver.memory",'8g')
sc = spark_session.sparkContext

我可以从应用程序主控中看到,所有参数都已正确设置,除了 spark.driver.memory。spark.driver.memory 无论我设置什么,它只使用 1GB。

我已经检查了 spark-default.conf,但没有 spark.driver.memory 等参数。为了检查它是否与会话生成器/木星一起使用,我从命令行使用 spark-submit 运行了一个应用程序,令我惊讶的是它选择了我正在传递的驱动程序内存。

有人可以对此有所了解吗?它不从 jupyter 中仅选择 spark.driver.memory 的原因可能是什么

标签: apache-sparkjupyter-notebookhadoop-yarn

解决方案


Jupyter notebook 将以 yarn-client 模式启动 pyspark,由于 JVM 驱动程序已经启动,因此无法使用属性“conf”设置驱动程序内存和某些配置。您必须在命令行中设置它。

因此,对于您的问题 - 当您在客户端模式下运行 spark 时,通过“conf.set”设置属性将不起作用,因为 JVM 驱动程序已经使用默认配置启动。这就是为什么当您从命令行传递属性时,它会选择它们。

启动 pyspark 的一种简单方法是

pyspark --driver-memory 2g --executor-memory 2g

更新:

要使用自定义 pyspark 参数启动 jupyter,请创建自定义内核,更多关于 jupyter 内核入门:http ://cleverowl.uk/2016/10/15/installing-jupyter-with-the-pyspark-and-r-kernels -for-spark-开发/

当您定义“kernel.json”时,添加--driver-memory 2g --executor-memory 2g到 PYSPARK_SUBMIT_ARGS 选项。


推荐阅读