我发现AWS Glue将执行器实例的内存限制设置为5 Gb --conf spark.executor.memory=5g
,在处理大数据集时,有时会出现java.lang.OutOfMemoryError
错误。驱动程序实例也是如此 --spark.driver.memory=5g
。
有没有选项可以增加这个值?
我发现AWS Glue将执行器实例的内存限制设置为5 Gb --conf spark.executor.memory=5g
,在处理大数据集时,有时会出现java.lang.OutOfMemoryError
错误。驱动程序实例也是如此 --spark.driver.memory=5g
。
有没有选项可以增加这个值?
尽管 AWS 文档声明不应传递 --conf
参数,但我们的 AWS 支持团队告诉我们传递 --conf spark.driver.memory=10g
可以解决我们遇到的问题。
您可以通过编辑作业并添加作业参数来覆盖参数。我使用的键和值在这里:
键: --conf
值: spark.yarn.executor.memoryOverhead=7g
这似乎有些违反直觉,因为设置键实际上在值中,但它被认可了。因此,如果您要尝试设置spark.yarn.executor.memory,以下参数将是适当的:
键: --conf
值: spark.yarn.executor.memory=7g
"--conf": "spark.yarn.executor.memory=8g"
,但是没有成功。作业失败并显示消息:“由于超出内存限制,YARN终止容器。已使用5.5 GB物理内存的5.7 GB。” 我实际上可以在作业参数中看到该参数。 - Xavi--conf
和值sparl.driver.extraClassPath=s3://temp/jsch-0.1.55.jar
来设置优先级,以便使用最新版本的jsch而不是Glue选择的版本,但是它没有起作用。我有什么遗漏的吗?此外,正如@rileyss提到的,Glue文档声明无法设置conf。那么,我们该如何解决这个问题呢? - Dwarrior官方胶水文档建议,胶水不支持自定义Spark配置。
AWS Glue内部还使用了几个参数名称,您永远不应该设置:
--conf — AWS Glue内部。请勿设置!
--debug — AWS Glue内部。请勿设置!
--mode — AWS Glue内部。请勿设置!
--JOB_NAME — AWS Glue内部。请勿设置!
有没有更好的解决方法?
--conf
,值为spark.driver.extraClassPath=s3://temp/jsch-0.1.55.jar
的设置,以便优先使用最新版本的jsch而不是Glue选择的版本,但它没有起作用。我有什么遗漏的吗?那么,我们应该如何解决这个问题呢? - Dwarrior您可以使用 Glue G.1X 和 G.2X 工作类型,这些类型提供更多的内存和磁盘空间,以扩展需要高内存和吞吐量的 Glue 作业。
此外,您还可以编辑 Glue 作业并设置
--conf
值 spark.yarn.executor.memoryOverhead=1024
或 2048
和 spark.driver.memory=10g
--driver-memory 8g
和--executor-memory 8g
运行 Glue 作业,但没有看到任何变化。作业仍然失败,并显示java.lang.OutOfMemoryError
,尝试加载超过5GB的数据。 - Alexey Bakulin--executor-memory 8g
被传递给了运行参数。但是,由于我只能传递 脚本 参数,所以我看到了两个--executor-memory
:第一个是由 Glue 传递的 Spark 作业运行参数的一部分,第二个是我的。就像这样:/usr/lib/spark/bin/spark-submit --master yarn --executor-memory 5g ... /tmp/runscript.py script_2018-03-16-11-09-28.py --JOB_NAME XXX --executor-memory 8g
之后,会出现类似于18/03/16 11:09:31 INFO Client: Will allocate AM container, with 5632 MB memory including 512 MB overhead
的日志消息。 - Alexey Bakulin