了解 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: Key dir/file is present in metadata but not 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 路径中的对象的超集。