Amazon web services AWS胶水执行器内存限制

Amazon web services AWS胶水执行器内存限制,amazon-web-services,apache-spark,aws-glue,Amazon Web Services,Apache Spark,Aws Glue,我发现AWS Glue将executor实例的内存限制设置为5GB--conf spark.executor.memory=5g,有时,在大型数据集上,它会因java.lang.OutOfMemoryError而失败。驱动程序实例--spark.driver.memory=5g时也是如此。 是否有增加此值的选项?您可以通过编辑作业并添加作业参数来覆盖参数。我使用的键和值如下所示: 键--conf 值:火花、纱线、执行器、记忆磁头=7g 这似乎违反直觉,因为设置键实际上位于值中,但它已被识别。因此

我发现AWS Glue将executor实例的内存限制设置为5GB
--conf spark.executor.memory=5g
,有时,在大型数据集上,它会因
java.lang.OutOfMemoryError
而失败。驱动程序实例
--spark.driver.memory=5g时也是如此。

是否有增加此值的选项?

您可以通过编辑作业并添加作业参数来覆盖参数。我使用的键和值如下所示:

键--conf

:火花、纱线、执行器、记忆磁头=7g

这似乎违反直觉,因为设置键实际上位于值中,但它已被识别。因此,如果您试图设置spark.Thread.executor.memory,以下参数将是合适的:

键--conf

:spark.warn.executor.memory=7g

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

AWS在内部使用了几个参数名 您不应设置:

--形态-内部到AWS胶水。别动

--调试-内部到AWS胶水。别动

--模式-AWS胶水内部。别动

--作业名称-AWS胶水内部。别动

有没有更好的解决这个问题的建议

  • 打开底部附近的粘合>作业>编辑作业>脚本库和作业参数(可选)>作业参数
  • 设置以下内容: 键:--conf 值:spark.Thread.executor.memoryOverhead=1024 spark.driver.memory=10g

  • 当我有一个高度倾斜的数据集时,我遇到了这样的内存不足错误。在我的例子中,我有一个包含动态有效负载的json文件桶,这些动态有效负载根据json中指示的事件类型而不同。无论我是否使用此处所示的配置标志并增加DPU,我都会不断出现内存不足错误。事实证明,我的事件高度倾斜,有两种事件类型占总数据集的90%以上。一旦我在事件类型中添加了“salt”并分解了高度倾斜的数据,我就没有遇到任何内存不足的错误


    下面是AWS EMR的一篇博文,讨论了同样的内存不足错误和高度倾斜的数据

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

    我尝试使用参数
    --driver memory 8g
    --executor memory 8g
    运行粘合作业,但没有看到任何更改。作业仍然失败,因为
    java.lang.OutOfMemoryError
    尝试在5GB上加载数据。您是否已确认更改是否已执行(在日志中)?比如=--conf spark.executor.memory=8gYes,在日志中我看到参数
    --executor memory 8g
    在运行参数中传递。但是,一旦我只能传递脚本参数,我就会看到2个执行器内存:第一个是通过Glue传递的spark作业运行参数的一部分,第二个是我的。像这样:
    /usr/lib/spark/bin/spark submit--master thread--executor memory 5g/tmp/runscript.py script_2018-03-16-11-09-28.py——作业名称XXX——执行器内存8g
    之后,一条类似
    18/03/16 11:09:31 INFO Client:的日志消息将分配AM容器,5632 MB内存,包括512 MB开销
    您能解决这个问题吗?@TofigHasanov仍然不能。请尝试Kris Bravo的解决方案并让我知道。现在我没有能力测试它。希望有用。谢谢克里斯。我将尽快测试您的解决方案。我刚刚在我的CloudFormation模板的“工作”部分中的
    DefaultArguments
    部分中添加了以下内容:
    “--conf:“spark.Thread.executor.memory=8g”
    ,但运气不佳。作业失败,消息
    容器因超出内存限制而被纱线杀死。使用了5.7 GB的5.5 GB物理内存。
    我实际上可以在作业参数中看到参数。我尝试了以下设置,键为
    --conf
    ,值为
    spark.driver.extraClassPath=s3://temp/jsch-0.1.55.jar
    ,以优先于jsch的最新jar,而不是Glue正在选择的版本,但它没有工作我错过了什么吗。另外,正如@Rileys所提到的,Glue文档声明不能设置conf。那么,我们应该如何解决这个问题呢?@Xavi它很可能是您需要修改的驱动程序配置。例如
    “spark.driver.memory=8g”
    您能想出这个问题的解决方案吗?我尝试了以下设置,键为
    --conf
    ,值为
    spark.driver.extraClassPath=s3://temp/jsch-0.1.55.jar
    ,以优先于jsch的最新jar,而不是Glue正在选择的版本,但它不起作用。我错过什么了吗?那么,我们应该如何着手解决这个问题呢?@Dwarrior我不确定你是否可以定制任何关于spark on Glue的东西。胶水似乎是在预设的环境下运行的,这就是为什么它便宜的原因。我的解决方案是将输入数据分成更小的块,然后运行几个粘合作业。如果您真的需要使用定制的火花设置,您可以尝试AWS EMR,这使您可以更自由地调整火花参数。谢谢!将探索其他选项。我从其他答案中推测,某些设置确实有效。:)