S3 shuffle storage for EMR Serverless

0

We are running into No space left on device errors in EMR Serverless for big jobs, even when setting driver / executor drive size to the maximum 200GB.

I tried to make the S3 shuffle storage plug-in for Glue work in EMR Serverless via a custom image and the appropriate spark configuration.

https://docs.aws.amazon.com/glue/latest/dg/cloud-shuffle-storage-plugin.html

But it fails with this error:

Receiver class com.amazonaws.spark.shuffle.io.cloud.CloudShuffleMapOutputWriter does not define or inherit an implementation of the resolved method 'abstract org.apache.spark.shuffle.api.metadata.MapOutputCommitMessage commitAllPartitions(long[])' of interface org.apache.spark.shuffle.api.ShuffleMapOutputWriter.

It looks like the plug-in is not implementing a necessary method. But this method has been in Spark since version 3.0, and supposedly the plug-in is compatible with Spark 3.3. We are using Spark 3.4 via EMR Serverless 6.15 though as that's the minimum for having interactive endpoints available in EMR Serverless, and we want to use this via notebooks.

Anybody knows if there is a way to get S3 shuffle storage working in EMR Serverless, or if the plug-in is going to be updated to implement the missing method(s)?

tomups
已提问 2 个月前186 查看次数
1 回答
1

It looks like you're having some trouble with the S3 shuffle storage plugin for Glue in your EMR Serverless setup with Spark 3.4. It seems that the plugin might not be fully compatible with Spark 3.4, even though it worked with Spark 3.3.

You may want to try these suggestions to see if they help resolve the issue:

  1. If possible, consider downgrading to Spark 3.3 to ensure compatibility with the plugin. However, this might not be feasible if you require features exclusive to Spark 3.4 or if you need interactive endpoints available in EMR Serverless.
  2. If downgrading is not an option, you might need to implement a custom version of the plugin that is compatible with Spark 3.4. This could involve modifying the source code of the plugin to add the missing method implementation.

Unfortunately, I don't guarantee this solution, but exploring these options might help you find a way to get S3 shuffle storage working in your EMR Serverless environment.

profile picture
专家
已回答 2 个月前
  • Unfortunately the plug-in is made by Amazon and is closed source so no way to fix it myself.

    I am not even sure if it will work with Spark 3.3 as 3.3 has the same method that fails. It exists since Spark 3.0. I think there must be some difference between the Spark running in Glue vs the Spark in EMR Serverless, that makes the plug-in work for Glue only.

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则