用Java API实现HDFS操作(三)问题汇总
說明:整理博主用Java API實現HDFS操作時遇到的問題
問題
為搭建分布式操作環境–在ubuntu16中安裝IDEA2021、tomcat9.0、hadoop2.7,建議分配磁盤空間30G及以上,內存分配3G(物理內存共8G)
未啟動hadoop
報錯:Exception in thread "main" java.net.ConnectException: Call From ubuntu16/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: 拒絕連接;
原因:未啟動Hadoop
解決方法:
‘Configuration’ is abstract; cannot be instantiated
原因:Configuration導包錯誤
解決方法:在上傳文件到hadoop時,Configuration應該導入import org.apache.hadoop.conf.Configuration
路徑錯誤
public class WriteFile{public static void main(String[] args) throws IOException, URISyntaxException {FileSystem hdfs = FileSystem.get(new URI("hdfs//localhost:9000"), new Configuration());String filePath = "/hdfstest/writefile";// FSDataOutputStreamFSDataOutputStream create = hdfs.create(new Path(filePath));System.out.println("Step 1 Finish!");String sayHi = "hello world hello data!";byte[] buff = sayHi.getBytes();create.write(buff, 0, buff.length);create.close();System.out.println("Step 2 Finish!");} }上述代碼運行后報錯:Exception in thread "main" java.io.IOException: Mkdirs failed to create /hdfstest (exists=false, cwd=file:/usr/local/java/project)
原因:FileSystem.get(Configuration conf) 使用配置文件來獲取文件系統, 配置文件conf/core-site.xml,若沒有指定參數uri或參數uri指向的不是hdfs文件系統,則返回local file system
解決方法:注意new URI("hdfs://localhost:9000")
文件的絕對路徑(自根目錄),需再前加:/
$pwd # /aaa $cd /data # /data $cd data #/app/data文件權限問題
下載文件到本地文件系統,報錯文件權限不夠。
假設文件為:/data/hadoop/copytolocal
解決方法:chomd -R 777 /data/hadoop/copytolocal或chomd -R a+w /data/hadoop/copytolocal
運行成功但有警告
WARN util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
可能的原因:系統不兼容hadoop包
解決方法:僅是warn,不影響hadoop的運行,可不解決
java - Hadoop “Unable to load native-hadoop library for your platform” warning - Stack Overflow
How To Compile Apache Hadoop On Ubuntu Linux (ercoppa.org)
參考文章:
9000 failed on connection exception: java.net.ConnectException: 拒絕連接_分享專欄一一一每天進步一點點-CSDN博客
總結
以上是生活随笔為你收集整理的用Java API实现HDFS操作(三)问题汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS的常用操作
- 下一篇: python虚拟环境-conda