Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.7.0, 3.0.0-alpha1
-
None
-
None
Description
I've been looking at a big performance regression when writing to S3 from Spark that appears to have been introduced with HADOOP-12891.
In the Amazon SDK, the default threshold for multi-part copies is 320x the threshold for multi-part uploads (and the block size is 20x bigger), so I don't think it's necessarily wise for us to have them be the same.
I did some quick tests and it seems to me the sweet spot when multi-part copies start being faster is around 512MB. It wasn't as significant, but using 104857600 (Amazon's default) for the blocksize was also slightly better.
I propose we do the following, although they're independent decisions:
(1) Split the configuration. Ideally, I'd like to have fs.s3a.multipart.copy.threshold and fs.s3a.multipart.upload.threshold (and corresponding properties for the block size). But then there's the question of what to do with the existing fs.s3a.multipart.* properties. Deprecation? Leave it as a short-hand for configuring both (that's overridden by the more specific properties?).
(2) Consider increasing the default values. In my tests, 256 MB seemed to be where multipart uploads came into their own, and 512 MB was where multipart copies started outperforming the alternative. Would be interested to hear what other people have seen.
Attachments
Attachments
Issue Links
- relates to
-
HADOOP-12891 S3AFileSystem should configure Multipart Copy threshold and chunk size
- Resolved
- links to