我在 EC2 上设置了一个 Hadoop 集群,我想知道如何做 DFS。我所有的数据目前都在 s3 中,所有 map/reduce 应用程序都使用 s3 文件路径来访问数据。现在我一直在研究 Amazon EMR 是如何设置的,似乎对于每个工作流,都设置了一个名称节点和数据节点。现在我想知道我是否真的需要这样做,或者我是否可以使用 s3(n) 作为 DFS?如果这样做,有什么缺点吗?
谢谢!
我在 EC2 上设置了一个 Hadoop 集群,我想知道如何做 DFS。我所有的数据目前都在 s3 中,所有 map/reduce 应用程序都使用 s3 文件路径来访问数据。现在我一直在研究 Amazon EMR 是如何设置的,似乎对于每个工作流,都设置了一个名称节点和数据节点。现在我想知道我是否真的需要这样做,或者我是否可以使用 s3(n) 作为 DFS?如果这样做,有什么缺点吗?
谢谢!
为了在 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.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 配置,因为仍然不确定数据如何在数据节点中分区。
我们应该为namenode和datanode提供本地存储吗?