版本介绍
TYPE | ASCII |
---|---|
HADOOP 版本 | 3.2.1 |
JAVA版本 | 1.8 |
编辑器 | IDEA |
开发是在window上使用IDEA, 连接腾讯云购买的云主机, 云主机安装了HADOOP的环境;
代码展示
package com.imooc.bigdata.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
* 使用JAVA API 操作HDFS文件系统
*/
public class HDFSApp {
public static void main(String[] args) throws IOException {
try {
Configuration configuration = new Configuration();
FileSystem fileSystem = FileSystem.get(new URI("hdfs://181.42.34.105:8020"), configuration,"hadoop");
Path path = new Path("/hdfsapi/test");
boolean result = fileSystem.mkdirs(path);
System.out.println(result);
} catch (URISyntaxException | InterruptedException e) {
e.printStackTrace();
}
}
}
踩坑1
windows java客户端运行异常
java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.错误
网上查阅资料可知window需要在本地安装配置Hadoop的客户端环境, 并配置相关的环境变量;
具体解决办法:
1. 下载相关版本的Hadoop依赖包
2. 找到hadoop.dll, winutils.exe两个文件, 放到bin目录下
3. WINDOWS添加系统变量$HADOOP(对应HADOOP安装包的解压路径)
4. WINDOWS添加环境变量$PATH(将HADOOP_HOME添加当中)
6. 重启系统
踩坑2
第一次修改后再次执行报错:
RPC response exceeds maximum data length
原因是云主机hadoop的配置文件etc/hadoop/core-site.xml 的configuration配置没有配置完善, 重新添加该配置
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://181.42.34.105:8020</value>
</property>
</configuration>
FileSystem.get方法中的URI应该同property的value一致;
DONE