在 Spark-on-Yarn 中配置执行器和驱动程序内存
Configuring Executor and Driver memory in Spark-on-Yarn
我对在 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
输入数据信息:
来自 Hive 的 460 GB Parquet 格式 table
我正在使用 spark-sql 通过 spark-on-yarn 查询 hive 上下文,但它比 Hive 慢很多,而且我不确定 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 堆 space 异常和
GC 开销限制超出异常!! ???
非常感谢您在这方面的帮助!
乍一看,您 运行 超出了执行者的记忆。我建议增加他们的记忆力。
请注意,SPARK_WORKER_MEMORY 仅在独立模式下使用。 SPARK_EXECUTOR_MEMORY用于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 时间。我看到的另一件事是,这些实例是内存优化的。如果这适合您的情况,请三思。
我对在 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
输入数据信息:
来自 Hive 的 460 GB Parquet 格式 table 我正在使用 spark-sql 通过 spark-on-yarn 查询 hive 上下文,但它比 Hive 慢很多,而且我不确定 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 堆 space 异常和 GC 开销限制超出异常!! ???
非常感谢您在这方面的帮助!
乍一看,您 运行 超出了执行者的记忆。我建议增加他们的记忆力。
请注意,SPARK_WORKER_MEMORY 仅在独立模式下使用。 SPARK_EXECUTOR_MEMORY用于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 时间。我看到的另一件事是,这些实例是内存优化的。如果这适合您的情况,请三思。