我有点困惑,希望有人可以帮助我。
我们创建了一些ORC文件,我们想要在它们存储在S3上时进行查询。 我们注意到S3本机Filesystem S3n并没有真正解决这种问题。我不确定问题是什么 - 但我的猜测是,读者无法跳转到文件中的特定字节,因此他必须在查询之前加载整个文件。 所以我们尝试将文件存储在S3(uri s3://)上,这是一个块文件系统,就像s3支持的HDFS一样,效果很好。
但在阅读有关Amazon EMR的source后,我有点担心
- Amazon S3阻止文件系统(URI路径:s3bfs://)
Amazon S3块文件系统是旧文件存储系统。我们强烈反对使用此系统。重要 我们建议您不要使用此文件系统,因为它可能会触发可能导致集群失败的竞争条件。但是,遗留应用程序可能需要它。
- EMRFS (URI路径:s3://) EMRFS是HDFS的一种实现,用于从Amazon EMR直接读取和写入常规文件到Amazon S3。
我没有使用EMR - 我通过启动EC2集群然后使用s3作为冷存储来创建我的文件 - 但我现在有点困惑并且不确定当我使用s3存储我的文件时使用的文件系统URI方案s3:// - 我使用EMRFS还是使用不推荐使用的s3bfs文件系统?
答案 0 :(得分:0)
Amazon S3是一个对象存储系统。不建议" mount" S3作为文件系统。 Amazon Elastic Block Store(EBS)是一种块存储系统,在Amazon EC2实例上显示为卷。
从Amazon Elastic MapReduce(EMR)使用时,Hadoop具有扩展功能,可以轻松使用Amazon S3。但是,如果您不使用EMR,则无需使用EMRFS(仅在EMR上可用),也不应将S3用作块存储系统。
从EC2使用S3的最简单方法是通过AWS Command-Line Interface (CLI)。您可以使用aws s3 cp
命令将文件复制到S3或从S3复制文件。还有一个sync
命令,可以很容易地将数据同步到S3中。
您还可以通过SDK以编程方式连接到Amazon S3,以便您的应用可以直接向S3传输文件。
至于选择哪个...通常,应用程序喜欢使用本地文件系统上的文件,因此将文件从S3复制到本地设备。但是,如果您的应用程序可以直接与S3通信,那么移动部件的数量会减少,而且#34;