Junit封装执行mkdir报错
来源:3-18 HDFS API编程之jUnit封装

weixin_慕神5384537
2021-04-19
前一章节
通过
FileSystem fileSystem=FileSystem.get(new URI(“hdfs://...:8020”),configuration,“hadoop”);
成功链接阿里云并创建目录
Junit这边也先删除了该目录之后再执行mkdir,报错
下面代码部分地址正确,
public class HDFSAPP {
//阿里云服务器公网地址 *.*.*.*
public static final String HDFS_PATH= "hdfs://*.*.*.*:8020";
FileSystem fileSystem=null;
Configuration configuration=null;
@Before
public void setUp()throws Exception{
System.out.println("__________________setUp_______________________");
Configuration configuration=new Configuration();
/**
* 构造一个访问指定HDFS系统的客户端对象
* 第一个参数:HDFS的URI
* 第二个参数:客户端指定的配置参数
* 第三个参数:客户端的身份,即用户名
*/
FileSystem fileSystem=FileSystem.get(new URI(HDFS_PATH),configuration,"hadoop");
}
@Test
public void mkdir() throws Exception {
fileSystem.mkdirs(new Path("/hdfsapi/test"));
}
@After
public void tearDown(){
configuration=null;
fileSystem=null;
System.out.println("__________________tearDown______________________________");
}
改用虚拟机,前一张不用junit能过
这一章节用了junit报错了
package com.immoc.bigdata.hadoop.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
/**
-
使用java API操作HDFS文件系统
-
关键点:
-
1)创建Configuration
-
2)获取FileSystem
-
3)你的HDFS API操作
*/
public class HDFSAPP {//阿里云服务器公网地址
//虚拟机IP192.168.1.127
public static final String HDFS_PATH = “hdfs://hadoop000:8020”;
//public static final String HDFS_PATH = “hdfs://192.168.1.127:8020”;FileSystem fileSystem=null;
Configuration configuration=null;@Before
public void setUp()throws Exception{
System.out.println(“setUp_____”);
Configuration configuration=new Configuration();
//configuration.set(“dfs.client.use.datanode.hostname”, “true”);
/**
* 构造一个访问指定HDFS系统的客户端对象
* 第一个参数:HDFS的URI
* 第二个参数:客户端指定的配置参数
* 第三个参数:客户端的身份,即用户名
*/
FileSystem fileSystem=FileSystem.get(new URI(HDFS_PATH),configuration,“hadoop”);}
@Test
public void mkdir() throws Exception {
fileSystem.mkdirs(new Path("/hdfsapi/test"));
}@After
public void tearDown(){
configuration=null;
fileSystem=null;
System.out.println(“tearDown_”);
}
// public static void main(String[] args) throws Exception{
//
// //hadoop2017:8020
// //虚拟机IP192.168.1.127
// Configuration configuration=new Configuration();
// FileSystem fileSystem=FileSystem.get(new URI(“hdfs://192.168.1.127:8020”),configuration,“hadoop”);
//
//
//
// Path path=new Path("/hdfsapi/test");
// boolean result=fileSystem.mkdirs(path);
//
// System.out.println(result);
// }
}
1回答
-
云主机这个代码还不够,需要额外的几个参数设置。
你可以到问答区搜索:dfs.datanode.use.datanode.hostname 这关键字,有整理好的答案
042021-04-20
相似问题