配置没问题,但通过java api仍然操作不了hdfs的问题。

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题
  • 近来刚入门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下,就能解决问题。

在这里插入图片描述
成功创建
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值