idea windows本地访问远程hadoop服务问题

在上一篇博客hadoop基于zookeper自动高可用搭建 搭建好远程的hadoop集群服务后,需要通过本地java代码访问该集群。
java结构如下图所示
在这里插入图片描述

测试类HdfsTest 代码如下:

package com.wh.hdfs.test;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;

/**
 * Created by wh 2020/11/23.
 */
public class HdfsTest {
    private Configuration conf;
    private FileSystem fileSystem;
    @Before
    public void befor() throws Exception {
        // 一开始首先加载配置文件,包括默认的配置文件
        // 自定义的会覆盖默认的
         conf=new Configuration(true);
        // 获取filesystem对象,操作HDFS
         fileSystem=FileSystem.get(conf);
     }
    public  void  afater() throws Exception {
        // 用完后关闭到HDFS的连接
        fileSystem.close();
    }
  
    @Test
    public void testLs() throws Exception {
        FileStatus [] fs=fileSystem.listStatus(new Path("/"));
        for (FileStatus f : fs) {
            System.out.println(f);
        }
    }


}

测试结果却是如下图所示,表示没有连接到hadoop集群。
在这里插入图片描述

打印的是本地windows中hadoop_home所在盘的文件目录。
所以应该是没有加载到我们配置的core-site.xml以及hfds-site.xml文件。而是加载了默认的文件。
通过debug Configuration类,到方法
private Configuration.Resource loadResource(Properties properties, Configuration.Resource wrapper, boolean quiet) 可以看到如下结果
当加载core-default.xml 时 正常加载了windows本地的hadoop_home路径下的 core-default.xml文件
在这里插入图片描述

加载core-site.xml文件时没有获取到目录,得到的是空,也就是没有加载到本地自定义的core-site.xml文件,没有把默认的文件给覆盖
在这里插入图片描述

所以可能是资源文件设置有问题,打开idea 的iml文件
在这里插入图片描述
看到资源文件加载的路径不对,所以重新mark一下资源文件或者直接修改iml文件
在这里插入图片描述
然后重新测试,看到正常访问hadoop集群
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页