EMRFS是否使S3与外部客户端保持一致

时间:2017-06-05 19:56:10

标签: hadoop amazon-s3 amazon-emr

如果我在HFDS或本地文件系统中有文件,是否可以将其复制到启用了EMRFS的S3,请立即关闭群集,并确保文件可用于列出和读取外部读取器这个复制操作完成后会立即生效吗?或者EMRFS是否仅在启用的特定EMR群集中保持一致?从HDFS通过EMRFS将文件复制到S3会是什么样的?从本地文件系统?

2 个答案:

答案 0 :(得分:1)

EMRFS是为EMR hadoop作业创建的对象启用的一致视图。

1)EMRFS的主要目的是,hadoop作业创建的对象是立即一致的。因此,如果存在依赖关系,则文件可用于下一个作业。

2)将文件复制到S3以使imediate与下一个hadoop作业保持一致的方式是,将文件复制到hdfs,然后复制到s3 使用以下命令。

  1. Hdfs dfs -put file.txt / user / hadoop /
  2. hdfs dfs -cp /user/hadoop/file.txt s3:// bucket-name
  3. 列出s3中的文件非常昂贵,如果你希望数据在s3上立即一致,你必须在s3上实现索引。以下是使用dynamodb使文件立即保持一致的链接 https://aws.amazon.com/blogs/big-data/building-and-maintaining-an-amazon-s3-metadata-index-without-servers/

    当你使用s3 api时,s3的一致性就会出现,因为它不会通过EMRFS元数据。

答案 1 :(得分:0)

我在AWS开发者论坛上问了同样的问题 - https://forums.aws.amazon.com/thread.jspa?threadID=257220&tstart=25 - 这里包含了很多有价值的细节,它提供了比IMO组合的所有EMRFS文档更好的EMRFS概述,但我会提供崩溃摘要的崩溃摘要:

1)一致视图是必须在EMRFS配置中明确启用的功能,否则您只有S3一致性保证。

2)EMRFS Consistent View仅在共享相同EMRFS配置的集群中生效 - 它对正常访问S3的外部客户端没有影响

3)S3提供的唯一真正一致性保证是,以前未写入的新文件保证读取一致,但不能用于列表。因此,如果客户端专门通过它知道已经新创建的路径请求文件,它将始终获取它,但它可能会或可能不会在列表操作中获取文件的路径,并且如果该文件以前存在于那里不保证客户端将在哪个版本上进行读取操作。