代码之家  ›  专栏  ›  技术社区  ›  Yu Chen little_birdie

spark忽略执行器和驱动程序内存的配置

  •  0
  • Yu Chen little_birdie  · 技术社区  · 6 年前

    我试图在Spark中为我的执行者和驱动程序增加内存分配,但是我有一种奇怪的感觉,Spark忽略了我的配置。

    我使用以下命令:

    spark submit spark_consumer.py--驱动程序内存=10g --executor memory=5g--conf spark.executor.extraJavaOptions='XX:+useParallelGC -xx:+printgcDetails-xx:+printgcTimestamps'

    我的初始化代码是

    class SparkRawConsumer:
    
        def __init__(self, filename):
            self.sparkContext = SparkContext.getOrCreate()
    
            self.sparkContext.setLogLevel("ERROR")
            self.sqlContext = SQLContext(self.sparkContext)
    

    理论上,我应该看到我的驱动程序总有10GB的可用内存。但是,我在我的spark用户界面中看到了这一点(我的可用内存小于400MB): enter image description here

    为什么火花忽略了我要传递的配置?

    2 回复  |  直到 6 年前
        1
  •  0
  •   maxime G    6 年前

    定义火花配置有三种不同的方法

    1)火花-env.sh

    2)火花提交参数

    3)硬编码sparkconf,示例: sparkConf.set("spark.driver.memory","10G");

    优先顺序是:硬编码>spark submit>spark.env;

    如果您认为您的参数被其他内容覆盖,可以使用以下选项进行检查: sparkConf.getOption("spark.driver.memory");

    如果您想确保您的选项没有覆盖硬代码。

    您可以在这里看到所有选项: https://spark.apache.org/docs/latest/configuration.html

        2
  •  0
  •   Yu Chen little_birdie    6 年前

    这里的问题是我错误地指定了参数的顺序。打字 spark-submit --help 明确指定输入参数的顺序 spark-submit :

    Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
    

    一旦我改变了参数的顺序,我就可以在pyspark应用程序上增加内存:

    spark-submit --driver-memory 8G --executor-memory 8G spark_consumer.py