问题
- 近来刚入门hadoop,搭建完集群后,新建maven工程通过java api在hdfs上创建一个文件夹,通过如下代码,运行不报错,但一直不能在hdfs上创建,反而该文件夹在windows系统上创建了
package hpc.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class TestHdfsClient {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFs","hdfs://centos7:9000");
System.setProperty("HADOOP_USER_NAME","hpc");
FileSystem fs = FileSystem.get(conf);
//我想创建Xxxxx文件夹
fs.mkdirs(new Path("/Xxxxx"));
fs.close();
}
}
- 此外,我的core-site.xml配置文件也配置了fs.defaultFS
<name>fs.defaultFS</name>
<value>hdfs://centos7:9000</value>
解决办法:
于是我在fs.close() 前加了一句 System.out.println(fs.getName());,结果显示很让我吃惊,竟然是: file:///,代码没问题,配置也没问题,不应该是本地文件系统的呀。我找了很久,终于解决了,虽然具体原因不明白,好像是与没有配置zookeeper有关。
方法如下:把core-site.xml文件复制到resources下,就能解决问题。

成功创建:

本文描述了一位Hadoop初学者在使用Java API尝试在HDFS上创建文件夹时遇到的问题。尽管代码运行无误,但在HDFS上未能创建文件夹,反而在本地Windows系统中创建。经过排查,发现问题是由于未正确识别HDFS,与Zookeeper配置缺失有关。最终解决方案是将core-site.xml配置文件复制到Maven项目的resources目录下。
4609

被折叠的 条评论
为什么被折叠?



