我在 EMR 集群上使用 S3DistCp 来聚合大约 200K 个小文件(总共 3.4GB(从一个 S3 存储桶到同一存储桶中的另一个路径。它正在工作,但速度非常慢(超过 600 分钟后传输约 20MB(。
这是我的 EMR 配置:
1 master m5.xlarge
3 cores m5.xlarge
release label 5.29.0
命令:
s3-dist-cp --s3Endpoint=s3-eu-central-1.amazonaws.com --src=s3://my-bucket/input/ --dest=s3://my-bucket/output/ --groupBy=.*input/(entry).*(.json.gz) --targetSize=128
我错过了什么吗?我已经读过S3DistCp可以在眨眼间传输很多文件,但我不知道如何传输。顺便说一下,EMR 和存储桶都位于同一区域。
谢谢。
以下是建议
- 使用 R 类型实例。与 M 类型实例相比,它将提供更多内存
- 使用合并来合并源中的文件,因为您有许多小文件
- 检查映射器任务的数量。任务越多,性能越差