在spark-on-yarn中配置执行器和驱动程序内存

gstyhher  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(347)

我对spark-1.5.2中的执行器和驱动程序内存的配置感到困惑。
我的环境设置如下:

3 Node MAPR Cluster - Each Node: Memory 256G, 16 CPU 
Hadoop 2.7.0 
Spark 1.5.2 - Spark-on-Yarn

输入数据信息:
我正在使用spark sql查询带有spark on yarn的配置单元上下文,但是它比配置单元慢得多,而且不确定spark的内存配置是否正确,
这些是我的配置,

export SPARK_DAEMON_MEMORY=1g
    export SPARK_WORKER_MEMORY=88g

    spark.executor.memory              2g
    spark.logConf                      true
    spark.eventLog.dir                 maprfs:///apps/spark
    spark.eventLog.enabled             true
    spark.serializer                   org.apache.spark.serializer.KryoSerializer
    spark.driver.memory                5g
    spark.kryoserializer.buffer.max    1024m

如何避免spark java.lang.outofmemoryerror:java堆空间异常和gc开销限制超出异常???
非常感谢您的帮助!

o4hqfura

o4hqfura1#

乍一看,你的遗嘱执行人的记忆已经用完了。我建议增加他们的记忆力。
请注意,spark\ worker\内存仅在独立模式下使用。spark\执行器\存储器用于Yarn模式。
如果没有在集群上运行任何其他配置,可以尝试以下配置:

spark.executor.memory   16g
spark.executor.cores    1
spark.executor.instances 40
spark.driver.memory  5g (make it bigger if expected 
                         final result dataset is larger)

我不建议设置大的执行器内存,因为这通常会增加gc时间。我看到的另一件事是,这些示例是内存优化的。如果这符合你的情况,请三思。

相关问题