当我将Hadoop集群连接到Amazon存储并将文件下载到HDFS时,我发现s3://
它不起作用。在Internet上寻求帮助时,我可以使用S3n
。当我使用S3n
它的时候。我不明白,使用之间的区别S3
,并S3n
与我的Hadoop集群,有人能解释一下吗?
Answers:
我认为您的主要问题与拥有S3
和S3n
作为Hadoop的两个独立连接点有关。s3n://
表示“在此S3 url上可以从外界读取的常规文件”。s3://
指映射到位于AWS存储集群上的S3存储桶中的HDFS文件系统。因此,当您使用Amazon存储桶中的文件时,您必须使用S3N,这就是您的问题得以解决的原因。@Steffen添加的信息也很棒!!
在使用Amazon S3的两个文件系统中分别记录了指向Amazon S3的Hadoop Wiki页面:
S3
本机文件系统(URI方案:s3n)用于在S3上读写常规文件的本机文件系统。该文件系统的优点是您可以访问S3上用其他工具编写的文件。相反,其他工具可以访问使用Hadoop编写的文件。缺点是S3施加的文件大小限制为5GB。因此,它不适合替代HDFS(支持大文件)。S3块
文件系统(URI方案:s3)由S3支持的基于块的文件系统。文件存储为块,就像它们在HDFS中一样。这样可以有效地执行重命名。此文件系统要求您为文件系统专用存储桶-您不应使用包含文件的现有存储桶,也不应将其他文件写入同一存储桶。该文件系统存储的文件可以大于5GB,但不能与其他S3工具互操作。S3可以通过两种方式与Hadoop的Map / Reduce一起 使用,以替代使用S3块文件系统的HDFS(即,将其用作支持超大文件的可靠的分布式文件系统)或作为方便的数据输入存储库使用任一S3文件系统到MapReduce并从MapReduce输出。在第二种情况下,HDFS仍用于映射/还原阶段。[...]
[强调我的]
因此,差异主要与5GB限制的处理方式有关(这是可以在单个PUT中上载的最大对象,即使对象的大小范围可以从1字节到5 TB,请参见我可以存储多少数据?):使用S3块文件系统(URI方案:s3)可以弥补5GB的限制并存储高达5TB的文件时,它会依次替换HDFS。
这是一个解释:https : //notes.mindprince.in/2014/08/01/difference-between-s3-block-and-s3-native-filesystem-on-hadoop.html
Hadoop 0.10.0(HADOOP-574)中引入了第一个由S3支持的Hadoop文件系统。它被称为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将S3本机文件系统与URI方案s3n一起使用。尽管这仍然可行,但我们建议您使用s3 URI方案以获得最佳性能,安全性和可靠性。
它还表示您可以使用s3bfs://
来访问旧的块文件系统(以前称为)s3://
。
s3a://
改为使用。