HDFS Java API应用
CSDN链接:https://blog.csdn.net/m0_69488210/article/details/131430350
1、找到IDEA的MAVEN插件安装目录,修改settings.xml文件,在文件中添加MAVEN淘宝镜像库

2、在IDEA中新建Marven项目,修改pom.xml,在pom.xml文件中的根节点中,添加一个子节点,如下图:

3、查询maven组件配置https://mvnrepository.com/
!!注意在查询组件时选择的组件要和实际安装的hadoop版本一致,下面的以hadoop-3.1.2版本为例
需要查询的组件:
hadoop-client
hadoop-hdfs
hadoop-common
将所有查询到的组件的XML插入到节点中去,如下图:


pom.xml修改完毕后,点击右下角的"Import Changes"即可将MAVEN库中的JAR包下载到项目中,默认情况下,会从MAVEN官网下载,速度比较慢;可事先配置MAVEN淘宝镜像库,基本方法就是在IntelliJ IDEA的安装目录下,找到MAVEN插件的安装目录,修改其配置文件,将镜像设置添加到配置文件中即可
4、首先在D盘新建一个uploadtohdfs.txt文件,然后运行下面的代码:(注意:以下代码的IP地址要替换为hadoop集群中虚拟机主节点实际的IP地址)
5、运行代码实现hdfs上传文件操作

6、通过命令在hdfs上查看文件上传情况



7、附:HDFS Java API常见异常解决方案
异常记录:
Exception in thread “main” org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme “hdfs”
缺少hadoop-core配置,hadoop-core版本太低,疑似已被放弃,使用hadoop-client代替
Exception in thread “main” java.lang.IllegalArgumentException: Wrong FS: hdfs://192.168.137.10:9000/uploadtohdfs.txt, expected: file:///
未识别到hdfs服务器导致,应该与jdk版本、hadoop-client等配置有关
Exception in thread “main” org.apache.hadoop.ipc.RemoteException: Server IPC version 9 cannot communicate with client version 4
客户端版本太低,不能使用hadoop-core,而应使用hadoop-client
could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and 0 node
HDFS问题,检查DataNode是否启动,如果无异常,可能是元数据异常导致,须清空所有节点中的dfs/name,dfs/data和tmp目录,并重新格式化NameNode
Permission denied: user=Administrator, access=WRITE, inode=“/tmp”:root:supergroup:drwxr-xr-x
写入权限问题,解决此问题后可完成API调试
解决方案之一:
(1)NameNode所在节点创建一个和windows一样的用户(注意大小写)
如:adduser Administrator
(2)创建一个子目录,将权限赋予该用户
如:hadoop fs -mkdir /usr
hadoop fs -chown Administrator /usr
(3)通过java代码可将文件上传到该目录