经 EMRFS S3 优化的提交程序和分段上传 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

经 EMRFS S3 优化的提交程序和分段上传

要使用经 EMRFS S3 优化的提交程序,则必须在 Amazon EMR 中启用分段上传。默认启用分段上传。需要时,您可以重新启用它。有关更多信息,请参阅《Amazon EMR 管理指南》中的为 Amazon S3 配置分段上传

经 EMRFS S3 优化的提交程序利用分段上传类似于事务的特征,来确保由任务写入的文件在任务提交后尝试仅显示在作业的输出位置。通过以这种方式使用分段上传,提交程序可通过默认的 FileOutputCommitter 算法版本 2 提高任务提交性能。使用经 EMRFS S3 优化的提交程序时,有一些与传统分段上传行为的关键区别需要考虑:

  • 无论文件大小如何,分段上传都会执行。这不同于 EMRFS 的默认行为,其中 fs.s3n.multipart.uploads.split.size 属性在触发分段上传时,控制文件大小。

  • 在任务提交或中止之前,分段上传在较长时间内都保持在未完成状态。这不同于 EMRFS 的默认行为,其中分段上传在任务完成写入给定文件时完成。

由于这些区别,如果 Spark Executor JVM 在任务正在运行或将数据写入到 Amazon S3 时发生崩溃或被终止,未完成的分段上传更可能被留下来。因此,当您使用经 EMRFS S3 优化的提交程序时,请务必遵循管理失败的分段上传的最佳实践。有关更多信息,请参阅《Amazon EMR 管理指南》中使用 Amazon S3 存储桶的最佳实践