1. 程式人生 > >[Hadoop 2] 常用 Java API 及應用例項

[Hadoop 2] 常用 Java API 及應用例項

1 開啟 Eclipse,開始建立專案,選擇頂部選單 File->New->Java Project,建立名為 HadoopTest 專案,如下圖:
Eclipse

2 為專案載入所需要的 jar 包。

  • 如何獲取 jar 包: Java API 所在的 jar 包都在已經安裝好的 hadoop 資料夾中,路徑為: <hadoop_home>/share/hadoop下。本專案所需的 hadoop jar 包主要有 hadoop-common-2.9.0.jarhadoop-hdfs-2.9.0.jar

  • 具體操作為:在所選的 Eclipse 專案上右鍵點選->在彈出選單中選擇 Properties->Java Build Path->Libraries->Add Externall JARS

  • 另外,為了避免報“ClassNotFound”異常,還需要向專案中加入 hadoop API 所依賴的第三方包,這些包在 <hadoop_home>/share/hadoop/common/lib/ 資料夾下,將該lib檔案整個複製到專案根目錄下,並在 eclipse 中重新整理專案,選中 lib 下的所有 jar 包,右鍵選擇 Build Path->Add to Build Path
    新增jar包

3 編寫一個簡單的程式來測試偽分佈檔案系統 HDFS 上是否存在 test.txt 檔案:

import org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class Chapter3 { public static void main(String[] args) { try { String filename="hdfs://localhost:9000/user/hadoop/test.txt"; Configuration conf=new Configuration(); FileSystem fs=FileSystem.get(conf); if
(fs.exists(new Path(filename))) { System.out.println("檔案存在"); }else { System.out.println("檔案不存在"); } }catch(Exception e) { e.printStackTrace(); } } }

4 直接執行會報錯

Wrong FS: hdfs://localhost:9000/user/hadoop/test.txt, expected: file:///

該錯誤的解決方法是將 <hadoop_home>/etc/hadoop/ 資料夾下的 core-site.xml 檔案和 hdfs-site.xml 檔案複製拷貝到專案的 src/ 目錄下。

5 再執行還會報以下錯誤:

No FileSystem for scheme “hdfs”

需要新增 hadoop-hdfs-client-2.9.0.jar 包到Build Path下。

6 執行成功後結果如下:

執行結果

參考資料

[1] Eclipse下匯入外部jar包的3種方式:http://blog.csdn.net/mazhaojuan/article/details/21403717
[2] Wrong FS:http://blog.itpub.net/22846396/viewspace-1119945
[3] 大資料技術與應用 課件