HDFS Java API應(yīng)用
CSDN鏈接:https://blog.csdn.net/m0_69488210/article/details/131430350
1、找到IDEA的MAVEN插件安裝目錄,修改settings.xml文件,在文件中添加MAVEN淘寶鏡像庫(kù)

2、在IDEA中新建Marven項(xiàng)目,修改pom.xml,在pom.xml文件中的根節(jié)點(diǎn)中,添加一個(gè)子節(jié)點(diǎn),如下圖:

3、查詢maven組件配置https://mvnrepository.com/
?。∽⒁庠诓樵兘M件時(shí)選擇的組件要和實(shí)際安裝的hadoop版本一致,下面的以hadoop-3.1.2版本為例
需要查詢的組件:
hadoop-client
hadoop-hdfs
hadoop-common
將所有查詢到的組件的XML插入到節(jié)點(diǎn)中去,如下圖:


pom.xml修改完畢后,點(diǎn)擊右下角的"Import Changes"即可將MAVEN庫(kù)中的JAR包下載到項(xiàng)目中,默認(rèn)情況下,會(huì)從MAVEN官網(wǎng)下載,速度比較慢;可事先配置MAVEN淘寶鏡像庫(kù),基本方法就是在IntelliJ IDEA的安裝目錄下,找到MAVEN插件的安裝目錄,修改其配置文件,將鏡像設(shè)置添加到配置文件中即可
4、首先在D盤(pán)新建一個(gè)uploadtohdfs.txt文件,然后運(yùn)行下面的代碼:(注意:以下代碼的IP地址要替換為hadoop集群中虛擬機(jī)主節(jié)點(diǎn)實(shí)際的IP地址)
5、運(yùn)行代碼實(shí)現(xiàn)hdfs上傳文件操作

6、通過(guò)命令在hdfs上查看文件上傳情況



7、附:HDFS Java API常見(jiàn)異常解決方案
異常記錄:
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:///
未識(shí)別到hdfs服務(wù)器導(dǎo)致,應(yīng)該與jdk版本、hadoop-client等配置有關(guān)
Exception in thread “main” org.apache.hadoop.ipc.RemoteException: Server IPC version 9 cannot communicate with client version 4
客戶端版本太低,不能使用hadoop-core,而應(yīng)使用hadoop-client
could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and 0 node
HDFS問(wèn)題,檢查DataNode是否啟動(dòng),如果無(wú)異常,可能是元數(shù)據(jù)異常導(dǎo)致,須清空所有節(jié)點(diǎn)中的dfs/name,dfs/data和tmp目錄,并重新格式化NameNode
Permission denied: user=Administrator, access=WRITE, inode=“/tmp”:root:supergroup:drwxr-xr-x
寫(xiě)入權(quán)限問(wèn)題,解決此問(wèn)題后可完成API調(diào)試
解決方案之一:
(1)NameNode所在節(jié)點(diǎn)創(chuàng)建一個(gè)和windows一樣的用戶(注意大小寫(xiě))
如:adduser Administrator
(2)創(chuàng)建一個(gè)子目錄,將權(quán)限賦予該用戶
如:hadoop fs -mkdir /usr
hadoop fs -chown Administrator /usr
(3)通過(guò)java代碼可將文件上傳到該目錄