我正在EC2上建立一个Hadoop集群,我想知道如何进行DFS。我的所有数据目前都在s3中,所有map/reduce应用程序都使用s3文件路径来访问数据。现在我一直在研究Amazons EMR是如何设置的,似乎每个作业流都设置了一个名称节点和数据节点。现在我想知道我是否真的需要这样做,或者我是否可以只使用s3(n)作为DFS?如果这样做,有什么缺点吗?
谢谢!
为了使用S3而不是HDFS fs.name.default在core-site.xml中需要指向您的bucket:
<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
您工作的任何中间数据都会进入HDFS,所以是的,您仍然需要一个namenode和datanodes
https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/core-default.xml
fs.default.name已弃用,可能fs.defaultFS更好。
我能够使用实现s3集成
<property>
<name>fs.default.name</name>
<value>s3n://your-bucket-name</value>
</property>
在core-site.xml中,使用hdfs-ls命令获取文件列表。但是也应该有namenode和单独的datanode配置,因为z仍然不确定数据是如何在数据节点中分区的。
我们应该为namenode和datanode提供本地存储吗?