在 Spark-on-Yarn 中配置 Executor 和 Driver 内存
Posted
技术标签:
【中文标题】在 Spark-on-Yarn 中配置 Executor 和 Driver 内存【英文标题】:Configuring Executor and Driver memory in Spark-on-Yarn 【发布时间】:2017-07-12 13:41:30 【问题描述】:我对在 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 格式表 我正在使用 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 heap space exceptions and GC 开销限制超出异常!! ???
非常感谢您在这方面的帮助!
【问题讨论】:
您是否尝试过 spark.executor.instances,这将是集群中您的 spark 工作人员的数量? 谢谢杜米特鲁。我现在已经添加了。 【参考方案1】:乍一看,您正在耗尽执行者的内存。我建议增加他们的记忆力。
请注意,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 时间。我看到的另一件事是,这些实例是内存优化的。如果这适合您的情况,请三思。
【讨论】:
嗨 Luis...感谢您提供详细信息。我已经尝试使用大型执行程序内存和 40 多个执行程序实例,结果是 spark-sql 中超出了 GC 开销,但我可以使用 Spark Interpreter 在 Zeppelin 中运行相同的查询,大约需要 41 分钟才能完成,Hive 在 15 内完成分钟与相同的 480GB 输入。有没有其他参数配置更好的性能?? 您是否能够成功运行查询? 我可以在 Zeppelin 中成功运行查询,但不能使用 spark-sql cli。在 spark-sql cli 中出现 GC 开销异常。 嗨 Luis...spark web-ui 中的环境变量显示 master.spark =local[*] !!!这应该是“纱线簇”吧?如果错了怎么改spark.master!!以上是关于在 Spark-on-Yarn 中配置 Executor 和 Driver 内存的主要内容,如果未能解决你的问题,请参考以下文章
Spark单机伪分布式环境搭建完全分布式环境搭建Spark-on-yarn模式搭建
电子构建失败并出现 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
MySQL数据库使用报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before execu
java.sql.SQLException: Can not issue data manipulation statements with execu 这是错误提示