日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

用Java API实现HDFS操作(三)问题汇总

發布時間:2025/4/5 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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
解決方法:

  • 首先確保hadoop相應進程是否開啟,通過jps查看是否有namenode進程
  • 然后通過netstat -nltp|grep 9000查看9000端口是否處于監聽狀態
  • 接著通過telnet 遠程的主機名 9000查看是否連接成功,如果提示Connection refused則進行第4步
  • 通過sudo service iptables status查看防火墻是否開啟,如果開啟則通過sudo service iptables stop(此命令立即生效,但機器重啟后又會恢復,如果想永久關閉(開啟)防火墻,可以通過sudo chkconfig iptables off(on)命令),將其關閉(大部分是由于開啟了防火墻導致的)
  • ‘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操作(三)问题汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。