[Hadoop 2] 常用 Java API 及應用例項
1 開啟 Eclipse,開始建立專案,選擇頂部選單 File->New->Java Project
,建立名為 HadoopTest 專案,如下圖:
2 為專案載入所需要的 jar 包。
如何獲取 jar 包: Java API 所在的 jar 包都在已經安裝好的 hadoop 資料夾中,路徑為:
<hadoop_home>/share/hadoop
下。本專案所需的 hadoop jar 包主要有hadoop-common-2.9.0.jar
和hadoop-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
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] 大資料技術與應用 課件