72

当我将我的 Hadoop 集群连接到 Amazon 存储并将文件下载到 HDFS 时,我发现s3://它不起作用。在 Internet 上寻求帮助时,我发现我可以使用S3n. 当我使用它时S3n,它起作用了。我不明白使用S3S3n与我的 Hadoop 集群之间的区别,有人可以解释一下吗?

4

3 回答 3

69

使用Amazon S3的两个文件系统记录在针对 Amazon S3 的相应Hadoop wiki 页面中:

  • S3 Native FileSystem(URI 方案:s3n)
    用于在 S3 上读取和写入常规文件的本机文件系统。此文件系统的优点是您可以访问 S3 上使用其他工具编写的文件。相反,其他工具可以访问使用 Hadoop 编写的文件。缺点是 S3 对文件大小施加了 5GB 的限制。由于这个原因,它不适合作为 HDFS(支持非常大的文件)的替代品。

  • S3 块文件系统(URI 方案:s3)
    由 S3 支持的基于块的文件系统。文件存储为块,就像它们在 HDFS 中一样。这允许有效地实现重命名。此文件系统要求您为文件系统专用一个存储桶 - 您不应使用包含文件的现有存储桶,或将其他文件写入同一存储桶。此文件系统存储的文件可以大于 5GB,但不能与其他 S3 工具互操作

有两种方法可以将 S3 与 Hadoop 的 Map/Reduce 一起使用, 或者作为使用 S3 块文件系统的 HDFS 的替代品(即,将其用作支持超大文件的可靠分布式文件系统)或作为数据输入的便捷存储库使用任一 S3 文件系统从 MapReduce 到和输出。在第二种情况下,HDFS 仍然用于 Map/Reduce 阶段。[...]

[强调我的]

所以差异主要与如何处理 5GB 限制有关(这是可以在单个 PUT 中上传的最大对象,即使对象的大小范围可以从 1 字节到 5 TB,请参阅我可以存储多少数据? ):虽然使用S3 块文件系统(URI 方案:s3)可以弥补 5GB 的限制并将文件存储到 5TB,但它依次取代了 HDFS。

于 2012-05-13T10:12:08.290 回答
45

我认为您的主要问题与拥有S3S3n作为 Hadoop 的两个独立连接点有关。s3n://意思是“一个常规文件,在这个 S3 url 上可以从外界读取”。s3://指的是映射到位于 AWS 存储集群上的 S3 存储桶的 HDFS 文件系统。因此,当您使用 Amazon 存储桶中的文件时,您必须使用 S3N,这就是您的问题得到解决的原因。@Steffen 添加的信息也很棒!!

于 2012-05-14T01:17:36.963 回答
9

这是一个解释:https ://notes.mindprince.in/2014/08/01/difference-between-s3-block-and-s3-native-filesystem-on-hadoop.html

第一个 S3 支持的 Hadoop 文件系统是在 Hadoop 0.10.0 (HADOOP-574) 中引入的。它被称为 S3 块文件系统,并被分配了 URI 方案 s3://。在这个实现中,文件被存储为块,就像它们在 HDFS 中一样。此文件系统存储的文件无法与其他 S3 工具互操作 - 这意味着如果您转到 AWS 控制台并尝试查找此文件系统写入的文件,您将找不到它们 - 相反,您会找到名为类似block_-1212312341234512345等的东西。

为了克服这些限制,在 Hadoop 0.18.0 (HADOOP-930) 中引入了另一个 S3 支持的文件系统。它被称为 S3 本机文件系统,并被分配了 URI 方案 s3n://。此文件系统允许您访问 S3 上使用其他工具编写的文件...当引入此文件系统时,S3 的文件大小限制为 5GB,因此此文件系统只能处理小于 5GB 的文件。2010 年末,亚马逊……将文件大小限制从 5GB 提高到 5TB……

不再推荐使用 S3 块文件系统。Qubole 和 Amazon EMR 等各种 Hadoop 即服务提供商将 s3:// 和 s3n:// URI 映射到 S3 本机文件系统以确保这一点。

所以总是使用本机文件系统。不再有 5Gb 限制。有时您可能需要键入s3://而不是s3n://,但只需确保您创建的任何文件在浏览器的存储桶资源管理器中可见。

另请参阅http://docs.aws.amazon.com/ElasticMapReduce/latest/ManagementGuide/emr-plan-file-systems.html

以前,Amazon EMR 使用带有 URI 方案 s3n 的 S3 Native FileSystem。虽然这仍然有效,但我们建议您使用 s3 URI 方案以获得最佳性能、安全性和可靠性。

它还说您可以s3bfs://用来访问旧的块文件系统,以前称为s3://.

于 2016-06-03T16:44:02.980 回答