AWS Glue 执行程序内存限制

AWS Glue executor memory limit

我发现 AWS Glue 将执行程序的实例设置为内存限制为 5 Gb --conf spark.executor.memory=5g,有时,在大型数据集上它会失败 java.lang.OutOfMemoryError。驱动程序实例 --spark.driver.memory=5g 也是如此。 有没有增加这个值的选项?

您可以通过编辑作业和添加作业参数来覆盖参数。我使用的键和值在这里:

密钥: --conf

:spark.yarn.executor.memoryOverhead=7g

这似乎违反直觉,因为设置键实际上在值中,但它被识别了。因此,如果您尝试设置 spark.yarn.executor.memory,则以下参数是合适的:

密钥: --conf

价值:spark.yarn.executor.memory=7g

official glue documentation 表明 glue 不支持自定义 spark 配置。

There are also several argument names used by AWS Glue internally that you should never set:

--conf — Internal to AWS Glue. Do not set!

--debug — Internal to AWS Glue. Do not set!

--mode — Internal to AWS Glue. Do not set!

--JOB_NAME — Internal to AWS Glue. Do not set!

关于解决这个问题有更好的建议吗?

  1. 打开 Glue> 作业 > 编辑您的作业> 脚本库和作业参数(可选)> 靠近底部的作业参数
  2. 设置以下内容: 键:--conf 值:spark.yarn.executor.memoryOverhead=1024 spark.driver.memory=10g

当我有一个高度倾斜的数据集时,我遇到了这样的内存不足错误。就我而言,我有一个 json 文件桶,其中包含根据 json 中指示的事件类型而不同的动态有效负载。无论我是否使用此处指示的配置标志并增加 DPU,我都会遇到内存不足错误。事实证明,我的事件高度偏向于几个事件类型,占总数据集的 90% 以上。在我向事件类型添加 "salt" 并分解高度倾斜的数据后,我没有遇到任何内存不足错误。

这是 AWS EMR 的博客 post,其中讨论了同样的内存不足错误和高度倾斜的数据。 https://medium.com/thron-tech/optimising-spark-rdd-pipelines-679b41362a8a

尽管 aws 文档指出不应传递 --conf 参数,但我们的 AWS 支持团队告诉我们传递 --conf spark.driver.memory=10g 这更正了我们遇到的问题

您可以使用提供更多内存和磁盘的 Glue G.1X 和 G.2X 工作器类型 space 来扩展需要高内存和吞吐量的 Glue 作业。 您也可以编辑 Glue 作业并设置 --confspark.yarn.executor.memoryOverhead=10242048spark.driver.memory=10g