了解 EMRFS 一致视图如何跟踪 Amazon S3 中的对象 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

了解 EMRFS 一致视图如何跟踪 Amazon S3 中的对象

EMRFS 通过向 EMRFS 元数据添加有关 Amazon S3 中对象的信息,创建这些对象的一致视图。EMRFS 会在以下情况下向其元数据添加这些列表:

  • EMRFS 在 Amazon EMR 任务执行期间写入对象。

  • 使用 EMRFS CLI 将对象与 EMRFS 元数据同步或导入到元数据。

EMRFS 读取的对象不会自动添加到元数据。当 EMRFS 删除对象时,一个具有已删除状态的列表仍保留在元数据中,直到使用 EMRFS CLI 清除该列表。要了解有关 CLI 的更多信息,请参阅EMRFS CLI 命令参考。有关在 EMRFS 元数据中清除列表的更多信息,请参阅EMRFS 一致视图元数据

对于每个 Amazon S3 操作,EMRFS 都会在元数据中检查有关一致视图中的对象集的信息。如果 EMRFS 在其中一个操作执行过程中发现 Amazon S3 是不一致的,则会根据 emrfs-site 配置属性中定义的参数重试该操作。在 EMRFS 用尽重试次数后,它会引发 ConsistencyException 或记录异常并继续执行工作流程。有关重试逻辑的更多信息,请参阅重试逻辑。您可以在日志中找到 ConsistencyExceptions,例如:

  • listStatus: No Amazon S3 object for metadata item /S3_bucket/dir/object

  • getFileStatus: 密钥存在dir/file于元数据中,但不存在于 Amazon S3 中

如果直接从 Amazon S3 中删除 EMRFS 一致视图跟踪的对象,则 EMRFS 会将该对象视为不一致,这是因为 Amazon S3 中显示它仍存在于元数据中。如果您的元数据与 EMRFS 在 Amazon S3 中跟踪的对象不同步,则可以使用 EMRFS CLI 的 sync 子命令重置元数据以使其反映 Amazon S3 的情况。要了解元数据与 Amazon S3 之间的差异,请使用 diff。最后,EMRFS 只有在元数据中引用的对象的一致视图;相同 Amazon S3 路径中可能存在未进行跟踪的其它对象。EMRFS 在列出 Amazon S3 路径中的对象时,将返回在元数据中进行跟踪的对象与该 Amazon S3 路径中的对象的超集。