问题
- 近来刚入门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下,就能解决问题。
成功创建: