Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 从技术上讲,s3n、s3a和s3之间有什么区别?_Amazon Web Services_Amazon S3_Aws Sdk - Fatal编程技术网

Amazon web services 从技术上讲,s3n、s3a和s3之间有什么区别?

Amazon web services 从技术上讲,s3n、s3a和s3之间有什么区别?,amazon-web-services,amazon-s3,aws-sdk,Amazon Web Services,Amazon S3,Aws Sdk,我知道存在和以下词语: S3本机文件系统(URI方案:s3n)本机文件系统,用于读取和写入S3上的常规文件。这个文件系统的优点是,您可以访问S3上使用其他工具编写的文件。相反,其他工具可以访问使用Hadoop编写的文件。缺点是S3对文件大小施加了5GB的限制 S3A(URI模式:S3A)是S3本机s3n fs的继承者,S3A:系统使用Amazon的库与S3交互。这允许S3a支持更大的文件(不超过5GB限制)、更高性能的操作等。该文件系统旨在取代S3 Native的/succession:通过替换

我知道存在和以下词语:

S3本机文件系统(URI方案:s3n)本机文件系统,用于读取和写入S3上的常规文件。这个文件系统的优点是,您可以访问S3上使用其他工具编写的文件。相反,其他工具可以访问使用Hadoop编写的文件。缺点是S3对文件大小施加了5GB的限制

S3A(URI模式:S3A)是S3本机s3n fs的继承者,S3A:系统使用Amazon的库与S3交互。这允许S3a支持更大的文件(不超过5GB限制)、更高性能的操作等。该文件系统旨在取代S3 Native的/succession:通过替换URL模式,可以从s3n://URL访问的所有对象也可以从s3a访问

S3块文件系统(URI方案:S3)由S3支持的基于块的文件系统。文件以块的形式存储,就像在HDFS中一样。这样可以有效地实施重命名。这个文件系统要求您为文件系统指定一个bucket—您不应该使用包含文件的现有bucket,也不应该将其他文件写入同一个bucket。这个文件系统存储的文件可以大于5GB,但它们不能与其他S3工具互操作

为什么URI上的字母更改会产生如此大的差异?比如说

val data = sc.textFile("s3n://bucket-name/key")


这一变化背后的技术差异是什么?关于这一点,我能读到什么好文章吗?

URI方案上的字母更改有很大的不同,因为它会导致使用不同的软件来连接S3。有点像http和https之间的区别——这只是一个字母的变化,但它触发了行为上的巨大差异

s3和s3n/s3a之间的区别在于s3是AmazonS3之上的基于块的覆盖,而s3n/s3a不是(它们是基于对象的)

s3n和s3a之间的区别在于s3n支持最大5GB的对象,而s3a支持最大5TB的对象并具有更高的性能(两者都是因为它使用多部分上传)。s3a是s3n的继承者

若你们在这里是因为你们想了解你们应该在AmazonEMR中使用哪个S3文件系统,那个么就从Amazon上读取(只在wayback机器上可用)。网络是:使用s3://因为s3://和s3n://在EMR上下文中功能上是可互换的,而s3a://与EMR不兼容

要获得更多建议,请阅读。

在Apache Hadoop中,“s3://”指的是原始的s3客户端,它使用了非标准的可伸缩性结构。该库已弃用,很快将被删除

s3n是它的继承者,它使用对象的直接路径名,因此您可以使用其他应用程序读取和写入数据。与s3://类似,它使用jets3t.jar与s3通信

在Amazon的EMR服务中,s3://指的是Amazon自己的s3客户端,这是不同的。EMR上s3://中的路径直接引用对象存储中的对象

在Apache Hadoop中,S3N和S3A都是S3的连接器,S3A是使用Amazon自己的AWS SDK构建的后续接口。 为什么要用这个新名字?所以我们可以把它和一个稳定的并排运送。S3A是所有正在进行的可伸缩性、性能、安全性等方面的工作的中心。S3N被单独留下,所以我们不会破坏它。S3A在Hadoop2.6中发布,但在2.7之前仍然保持稳定,主要是出现了一些小规模问题

如果您使用的是Hadoop 2.7或更高版本,请使用s3a。如果您使用的是Hadoop 2.5或更早版本。s3n,如果您使用的是Hadoop 2.6,那么这是一个更艰难的选择-如果有问题,我会尝试s3a并切换回s3n-

有关历史的更多信息,请参阅

2017-03-14更新实际上,Hadoop 2.6中S3a上的分区被破坏,因为在
listFiles()调用中返回的块大小为0:Spark&pig之类的东西将工作划分为一个任务/字节。在Hadoop 2.6中,您不能使用S3a进行分析工作,即使核心文件系统操作和数据生成是令人满意的。Hadoop2.7修复了这个问题

2018-01-10更新Hadoop 3.0已经削减了s3:和s3n的实现:s3a就是你的全部。它现在明显优于它的前身,性能至少与Amazon实现一样好。亚马逊的“s3:”仍然由他们的封闭源代码客户端EMR提供。有关更多信息,请参阅;博士

  • AWS EMR只需使用
    s3://
  • 非EMR集群-限制S3的使用。
    • 不要使用
      s3
      s3a
      直接从代码中读取/写入大量数据
    • 使用
      s3 dist cp
      将数据获取到集群HDFS,然后将其发送回s3
    • s3a
      仅对读取少量到中等数量的数据有用
    • s3a
      写入不稳定

  • (从在EMR和私有硬件集群上部署多个作业的经验谈起)

    来自Amazon的支持文章似乎仍然是最新的,但我现在可以使用
    s3a
    方案从EMR作业编写S3。答案有可能需要修改。@mig虽然s3a可能有效,而且根据我的经验,它似乎确实有效,但AWS在技术上不支持它。“所以,我认为你使用它的风险是你自己承担的。”你在这里引用的文章jarmod已经不起作用了。你能更新链接吗?@christang看起来不再可用,所以提供了回程机器链接。基本上,AWS支持建议s3://un位置的s3a://作为任何支持票证
    val data = sc.textFile("s3a://bucket-name/key")