2016年5月5日 星期四

Hadoop 開發特戰包 (Windows 版) - 使用開發工具 Eclipse

本文將介紹如何使用特戰包中的開發工具 - Eclipse,從建立新專案開始,到撰寫一支 Java 程式,會一一逐步說明。使用開發工具 Eclipse 前,請先下載 eclipse.bat ,下載完成後直接放入特戰包即可。

1. 建立新專案

首先,點擊放在特戰包中的 eclipse.bat,點選後將會開啟 Eclipse (如果出現安全性警告視窗,請點選執行),如下圖所示。


進入 Eclipse 後,點選 File,選擇 New,再選擇 Other...,開始建立一個新的專案。


點選 Other...後會出現新視窗,請選擇 Java Project,我們要建立一個新的 Java 專案。


專案名稱取名為 MyHadoop ,在 JRE 的部分,選擇 Use a project specific JRE,再點選 Finish,完成建立一個新的 Java 專案。


如果出現以下詢問視窗,請點選 Yes。


2. 撰寫一支 Java 程式

新專案建立完成後,當然要開始撰寫 Java 了,首先,對專案點選右鍵,選擇 New,再選擇 Class,開始建立 Java 程式。


新的 Class 名稱取名為 MyHello,在 Modifiers 的部分選擇 public,然後在下方勾選 public static void main(String[] args),再點選 Finish 即可完成建立。


建立完成後,在左右大括號中間開始撰寫,請輸入 System.out.println("Hello"); ,撰寫完畢後,點選上方類似撥放鍵的圖案,點選 Run As ,再選擇 2 Java Application,開始執行這支 Java 程式。


執行後可以在下方看到輸出結果,如下圖,畫面中出現 Hello,代表這支程式執行成功。


3. 引入 Hadoop 函式庫

因應開發需求,我們需要導入 Hadoop 的函式庫,詳細步驟如下。首先,對專案點選右鍵,選擇 Build Path,再選擇 Add Libraries...,準備開始引入函式庫 。


點選 Add Libraries...後出現新視窗,請選擇 User Library,再點選 Next > 前往下一步。


出現選擇函式庫的畫面後,請點選右邊的 User Libraries...,出現新視窗後,再點選右邊的 New...,開始定義新的函式庫,名稱請輸入 HADOOP-COMMON,輸入完成後請按下 OK。


定義好新的函式庫名稱後,請點選右邊的 Add External JARs...,開始引入外部的 jar 檔,請至以下路徑 hadoop-2.7.1\share\hadoop\common,並將畫面中所有的 jar 檔圈選起來,再點擊開啟舊檔,即可完成。


請重複以上步驟新增其他的 Hadoop 函式庫,所有的函式庫名稱與對應 jar 檔之路徑如下(注意,該目錄下只要是 jar 檔都請圈選起來),都新增好後,請點選 OK。
  • HADOOP-COMMON-LIB       hadoop-2.7.1\share\hadoop\common\lib
  • HADOOP-COMMON               hadoop-2.7.1\share\hadoop\common
  • HADOOP-HDFS                       hadoop-2.7.1\share\hadoop\hdfs
  • HADOOP-MAPREDUCE         hadoop-2.7.1\share\hadoop\mapreduce
  • HADOOP-YARN                       hadoop-2.7.1\share\hadoop\yarn

外部函式庫新增好後,請勾選全部的函式庫,再點選 Finish,即可完成引入外部的 Hadoop 函式庫。


成功引入後,左邊畫面會顯示剛剛加入的函式庫,如下圖所示。


4.  撰寫使用 Hadoop Library 的 Java 程式

首先,建立新的 Class,名稱取名為URLdir,詳細建立步驟請參閱第二點。建立好後,請輸入以下程式碼:
  Configuration configuration = new Configuration();
FileSystem hdfs = FileSystem.get(new URI("hdfs://nna:8020"),configuration);
FileStatus[] fileStatus = hdfs.listStatus(new Path("hdfs://nna/user/dsa00"));
Path[] paths = FileUtil.stat2Paths(fileStatus);
System.out.println("***** Contents of Directory *****");
for (Path path : paths)
{
System.out.println(path);
}

輸入完成後,如下圖所示,會有許多錯誤,請移至紅色叉號圖案,檢查這些錯誤的原因。


在沒打錯字的情況下,大部分的錯誤都是缺少必要的 import,點擊錯誤訊息後, Eclipse 會建議我們可用的 import,如下圖的錯誤,請點選來自 Hadoop Library 的 import 'Configuration' org.apache.hadoop.conf.Configuration,點選後 Eclipse 就會自動加入 import 的程式碼。


錯誤檢查並消除完畢後,會如下圖所示,注意,部分的 import 並非來自 Hadoop Library,例如 URI,請選擇 import java.net.URI


全部完成後,請執行此程式,該程式會顯示程式中輸入之路徑底下的所有東西,成功畫面如下,輸出即為 hdfs://nna/user/dsa00 底下的所有東西 (注意,如果特戰包未連接至虛擬機,或Hadoop 叢集未啟動,又或者虛擬機未開啟,程式將會輸出其他訊息,例如  Retrying connect to server 等等)。


沒有留言:

張貼留言