java - 获取可用于读取/写入 HDFS 的 Hadoop FileSystem 对象的正确方法是什么?

标签 java hadoop hdfs

创建可用于读取/写入 HDFS 的文件系统对象的正确方法是什么?在我发现的一些例子中,他们会做这样的事情:

final Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/core-site.xml"));
conf.addResource(new Path("/usr/local/hadoop/etc/hadoop/hdfs-site.xml"));

final FileSystem fs = FileSystem.get(conf);

从配置类的文档来看,如果该文件位于类路径中,那么在创建对象时似乎会自动加载 core-site.xml 中的属性,因此无需再次设置。

我没有找到任何说明为什么需要添加 hdfs-site.xml 的内容,没有它似乎也能正常工作。

将 core-site.xml 放在类路径中并跳过 hdfs-site.xml 是否安全,或者我是否应该像我在示例中看到的那样设置两者?在什么情况下需要 hdfs-site.xml 中的属性?

最佳答案

FileSystem 只需一个配置 key 即可成功连接到 HDFS。以前是 fs.default.name。从 yarn 开始,它更改为 fs.defaultFS。因此,以下代码片段足以进行连接。

Configuration conf = new Configuration();
conf.set(key, "hdfs://host:port");  // where key="fs.default.name"|"fs.defaultFS"

FileSystem fs = FileSystem.get(conf);       

提示:检查 core-site.xml 中存在哪个键。在 conf 中设置与之关联的相同值。如果您运行代码的机器没有主机名映射,请输入其 IP。在 mapR 中,簇值将具有类似 maprfs:// 的前缀。

关于java - 获取可用于读取/写入 HDFS 的 Hadoop FileSystem 对象的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536886/

相关文章:

java - 使用 Java-Hadoop 连接器更新 MongoDB 中的现有集合

hadoop - 如何将HDFS数据持久化到docker容器中

hadoop - 在节点之间平均分配重量级任务

hadoop - PutHDFS关于Apache NiFi错误

java - 使用 Java 解码来自 Bing Translate 的 REST 响应

java - 刷新 Spring ApplicationContext,而不重新初始化上下文,可能吗?

Hadoop 流 - 从 reducer 输出中删除尾随选项卡

java - 如何让我的复选框动画在启动其 Onclick 方法之前完成

java - Java中静态 block 的必要性

hadoop - 使用映射器将空值写入 Parquet 文件