使用s3作为fs.default.name或HDFS?

时间:2011-06-07 20:27:38

标签: amazon-ec2 hadoop amazon-emr

我正在EC2上建立一个Hadoop集群,我想知道如何进行DFS。我的所有数据当前都在s3中,所有map / reduce应用程序都使用s3文件路径来访问数据。现在我一直在研究Amazons EMR是如何设置的,并且对于每个作业流,似乎都设置了名称节点和数据节点。现在我想知道我是否真的需要这样做,或者我是否可以使用s3(n)作为DFS?如果这样做,有任何缺点吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

为了在core-site.xml中使用S3而不是HDFS fs.name.default需要指向你的存储桶:

<property>
        <name>fs.default.name</name>
        <value>s3n://your-bucket-name</value>
</property>

建议您使用S3N而不是简单的S3实现,因为S3N可由任何其他应用程序和您自己读取:)

此外,在同一个core-site.xml文件中,您需要指定以下属性:

  • fs.s3n.awsAccessKeyId
  • fs.s3n.awsSecretAccessKey

fs.s3n.awsSecretAccessKey

答案 1 :(得分:1)

你工作的任何中间数据都会转到HDFS,所以是的,你还需要一个namenode和datanodes

答案 2 :(得分:1)

https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/core-default.xml

fs.default.name已被弃用,也许fs.defaultFS更好。

答案 3 :(得分:0)

我能够使用

进行s3集成
<property>
        <name>fs.default.name</name>
        <value>s3n://your-bucket-name</value>
</property> 

在core-site.xml中并使用hdfs ls命令获取文件列表。但是也应该有namenode和单独的datanode配置,因为仍然不确定数据如何在数据节点中进行分区。 / p>

我们应该有namenode和datanode的本地存储吗?