Anda di halaman 1dari 43

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境)

一、Hadoop 安裝(單機版)

(1) 準備 Ubuntu 作業系統之環境 (2) 安裝 Openssh-server 輸入:sudo apt-get install openssh-server
(1)
準備 Ubuntu 作業系統之環境
(2)
安裝 Openssh-server
輸入:sudo apt-get install openssh-server
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境

備註:本文件操作流程參考自國家高速網路與計算中心雲端運算基礎課程

1

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

Openssh-server 安裝完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 Openssh-server 安裝完成畫面 (3) 設定登入免密碼 輸入: ssh-keygen -t

(3) 設定登入免密碼 輸入:ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 Openssh-server 安裝完成畫面 (3) 設定登入免密碼 輸入: ssh-keygen -t

2

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

產生金鑰畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 產生金鑰畫面 輸入: cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 第 3
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 產生金鑰畫面 輸入: cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 第 3

輸入:cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 產生金鑰畫面 輸入: cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 第 3

3

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(4) 登入確認不用輸入密碼 輸入:ssh localhost

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (4) 登入確認不用輸入密碼 輸入: ssh localhost 第一次登入時,需輸入「 yes

第一次登入時,需輸入「yes

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (4) 登入確認不用輸入密碼 輸入: ssh localhost 第一次登入時,需輸入「 yes

4

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

進行登出

輸入:exit

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 進行登出 輸入: exit 登出畫面 第 5 頁

登出畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 進行登出 輸入: exit 登出畫面 第 5 頁
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 進行登出 輸入: exit 登出畫面 第 5 頁

5

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

重新登入確認,此時不用再輸入「yes」 輸入:ssh localhost

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 重新登入確認,此時不用再輸入「 yes 」 輸入: ssh localhost 進行登出

進行登出

輸入:exit

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 重新登入確認,此時不用再輸入「 yes 」 輸入: ssh localhost 進行登出

6

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(5)

安裝 java 環境 輸入:sudo apt-get purge java-gcj-compat

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (5) 安裝 java 環境 輸入: sudo apt-get

安裝 java,並在下面畫面中輸入「Y」繼續安裝 輸入:sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (5) 安裝 java 環境 輸入: sudo apt-get

7

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

點選「OK」繼續安裝

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 OK 」繼續安裝 點選「 Yes 」繼續安裝 第

點選「Yes」繼續安裝

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 OK 」繼續安裝 點選「 Yes 」繼續安裝 第

8

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

安裝完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 安裝完成畫面 (6) 下載 Hadoop 安裝套件並進行環境設定 切換至 /opt

(6) 下載 Hadoop 安裝套件並進行環境設定 切換至/opt 目錄 輸入:cd /opt

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 安裝完成畫面 (6) 下載 Hadoop 安裝套件並進行環境設定 切換至 /opt

9

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

下載 Hadoop 套件

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 下載 Hadoop 套件 輸入: sudo wge <at http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz 解壓縮 Hadoop 套件 輸入: sudo tar zxvf hadoop-0.20.2.tar.gz 第 10 頁 " id="pdf-obj-9-21" src="pdf-obj-9-21.jpg">

解壓縮 Hadoop 套件 輸入:sudo tar zxvf hadoop-0.20.2.tar.gz

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 下載 Hadoop 套件 輸入: sudo wge <at http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.20.2/hadoop-0.20.2.tar.gz 解壓縮 Hadoop 套件 輸入: sudo tar zxvf hadoop-0.20.2.tar.gz 第 10 頁 " id="pdf-obj-9-28" src="pdf-obj-9-28.jpg">

10

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

將解壓縮後資料移動至 hadoop 目錄 輸入:sudo mv hadoop-0.20.2/ hadoop

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 將解壓縮後資料移動至 hadoop 目錄 輸入: sudo mv hadoop-0.20.2/

設定使用者權限,本文件以使用者 chihua 為例進行設定 輸入:sudo chown -R hadooper:hadooper hadoop

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 將解壓縮後資料移動至 hadoop 目錄 輸入: sudo mv hadoop-0.20.2/

11

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

建立資料夾/var/hadoop 輸入:sudo mkdir /var/hadoop

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 建立資料夾 /var/hadoop 輸入: sudo mkdir /var/hadoop 設定使用者權限,本文件以使用者

設定使用者權限,本文件以使用者 chihua 為例進行設定 輸入:sudo chown -R hadooper:hadooper /var/hadoop

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 建立資料夾 /var/hadoop 輸入: sudo mkdir /var/hadoop 設定使用者權限,本文件以使用者

12

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(7)

設定 hadoop-env.sh 切換至 hadoop 目錄 輸入:cd hadoop/

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (7) 設定 hadoop-env.sh 切換至 hadoop 目錄 輸入:

編輯 hadoop-env.sh 內容 輸入:cat >> conf/hadoop-env.sh << EOF

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (7) 設定 hadoop-env.sh 切換至 hadoop 目錄 輸入:

13

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

輸入以下資訊至 hadoop-env.sh

export JAVA_HOME=/usr/lib/jvm/java-6-sun export HADOOP_HOME=/opt/hadoop export HADOOP_CONF_DIR=/opt/hadoop/conf EOF

輸入畫面,輸入後按 Enter 即完成 hadoop-env.sh 設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入以下資訊至 hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-6-sun export HADOOP_HOME=/opt/hadoop export

(8)

設定 core-site.xml 編輯 core-site.xml 內容 輸入:/opt/hadoop$ cat > conf/core-site.xml << EOF

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入以下資訊至 hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-6-sun export HADOOP_HOME=/opt/hadoop export

14

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

輸入以下資訊至 core-site.xml

<configuration> <property> <name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/var/hadoop/hadoop-\${user.name}</value>

</property>

</configuration>

EOF

輸入畫面,輸入後按 Enter 即完成 core-site.xml 設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入以下資訊至 core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入以下資訊至 core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property>

15

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(9)

設定 hdfs-site.xml 編輯 hdfs-site.xml 內容 輸入:/opt/hadoop$ cat > conf/hdfs-site.xml << EOF

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (9) 設定 hdfs-site.xml 編輯 hdfs-site.xml 內容 輸入:

輸入以下資訊至 hdfs-site.xml

<configuration> <property> <name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

EOF

輸入畫面,輸入後按 Enter 即完成 hdfs-site.xml 設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (9) 設定 hdfs-site.xml 編輯 hdfs-site.xml 內容 輸入:

16

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(10) 設定 mapred-site.xml 編輯 mapred-site.xml 內容 輸入:/opt/hadoop$ cat > conf/mapred-site.xml << EOF

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (10) 設定 mapred-site.xml 編輯 mapred-site.xml 內容 輸入:

輸入以下資訊至 mapred-site.xml

<configuration> <property> <name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

EOF

輸入畫面,輸入後按 Enter 即完成 mapred-site.xml 設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (10) 設定 mapred-site.xml 編輯 mapred-site.xml 內容 輸入:

17

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(11) 格式化 HDFS 輸入:bin/hadoop namenode -format

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (11) 格式化 HDFS 輸入: bin/hadoop namenode -format

完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (11) 格式化 HDFS 輸入: bin/hadoop namenode -format

18

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(12) 啟動 Hadoop 輸入:bin/start-all.sh

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (12) 啟動 Hadoop 輸入: bin/start-all.sh 完成畫面 第

完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (12) 啟動 Hadoop 輸入: bin/start-all.sh 完成畫面 第

19

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(13) 啟動查運作狀態 連結 http://localhost:50030/,瀏覽 Hadoop 管理介面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (13) 啟動查運作狀態 連結 <a href=http://localhost:50030/ ,瀏覽 Hadoop 管理介面 連結 http://localhost:50060/ ,瀏覽 Hadoop Task Tracker 狀態 第 20 頁 " id="pdf-obj-19-19" src="pdf-obj-19-19.jpg">

連結 http://localhost:50060/,瀏覽 Hadoop Task Tracker 狀態

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (13) 啟動查運作狀態 連結 <a href=http://localhost:50030/ ,瀏覽 Hadoop 管理介面 連結 http://localhost:50060/ ,瀏覽 Hadoop Task Tracker 狀態 第 20 頁 " id="pdf-obj-19-27" src="pdf-obj-19-27.jpg">

20

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

連結 http://localhost:50070/Hadoop DFS 狀態

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 連結 <a href=http://localhost:50070/ , Hadoop DFS 狀態 第 21 頁 " id="pdf-obj-20-18" src="pdf-obj-20-18.jpg">

21

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

二、Eclipse Hadoop Eclipse plugin 安裝 (1) 下載 Eclipse

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 二、 Eclipse 和 Hadoop 的 Eclipse plugin

本文件將 eclipse 放置於/opt 目錄下

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 二、 Eclipse 和 Hadoop 的 Eclipse plugin

22

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(2) 匯入 hadoop 0.20.2 eclipse plugin 輸入:sudo cp /opt/hadoop/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar /opt/eclipse/plugins (3) 開啟 eclipse 連續點選 eclipse 圖案滑鼠左鍵兩下,開啟
(2)
匯入 hadoop 0.20.2 eclipse plugin
輸入:sudo cp /opt/hadoop/contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar /opt/eclipse/plugins
(3)
開啟 eclipse
連續點選 eclipse 圖案滑鼠左鍵兩下,開啟 eclipse
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (2) 匯入 hadoop 0.20.2 eclipse plugin 輸入:sudo

23

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定 workspace 路徑,本文件以/home/chihua/workspace 為例

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 workspace 路徑,本文件以 /home/chihua/workspace 為例 設定視野,點選「 」,並選擇「
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 workspace 路徑,本文件以 /home/chihua/workspace 為例 設定視野,點選「 」,並選擇「

設定視野,點選「 」,並選擇「Other

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 workspace 路徑,本文件以 /home/chihua/workspace 為例 設定視野,點選「 」,並選擇「

24

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定為「MapReduce」,並點選「OK」完成設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定為「 MapReduce 」,並點選「 OK 」完成設定 (4) 開啟新專案

(4) 開啟新專案 點選「File\New\Other

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定為「 MapReduce 」,並點選「 OK 」完成設定 (4) 開啟新專案

25

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

選擇「Map/Reduce Project」,並點選「Next >

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 選擇「 Map/Reduce Project 」,並點選「 Next > 」

輸入 Project name,本文件以「wordcount」為例 點選「Configure Hadoop install directory」進行環境設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 選擇「 Map/Reduce Project 」,並點選「 Next > 」

26

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定 Hadoop installation directory 路徑為「/opt/hadoop

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 Hadoop installation directory 路徑為「 /opt/hadoop 」

點選「Finish」,完成新增專案

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 Hadoop installation directory 路徑為「 /opt/hadoop 」

27

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

點選「File\Properties」,進行專案參數設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\Properties 」,進行專案參數設定 點選左邊選單的「 Java Build Path

點選左邊選單的「Java Build Path」,並點選右方之「Libraries」 對 hadoop-0.20.2-ant.jar Source attachment Javadoc location 進行設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\Properties 」,進行專案參數設定 點選左邊選單的「 Java Build Path

28

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定 hadoop-0.20.2-ant.jar Source attachment 為「/opt/hadoop/src/ant

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 hadoop-0.20.2-ant.jar 之 Source attachment 為「 /opt/hadoop/src/ant

設定 hadoop-0.20.2-ant.jar Javadoc location 為「file:/opt/hadoop/docs/api

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 hadoop-0.20.2-ant.jar 之 Source attachment 為「 /opt/hadoop/src/ant

29

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

hadoop-0.20.2-ant.jar 設定完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 hadoop-0.20.2-ant.jar 設定完成畫面 依此類推,分別設定 hadoop-0.20.2-core.jar 和 hadoop-0.20.2-tools.jar 設定

依此類推,分別設定 hadoop-0.20.2-core.jar hadoop-0.20.2-tools.jar 設定 hadoop-0.20.2-core.jar Source attachment 為「/opt/hadoop/src/core」 設定 hadoop-0.20.2-core.jar Javadoc location 為「file:/opt/hadoop/docs/api」 設定 hadoop-0.20.2-tools.jar Source attachment 為「/opt/hadoop/src/tools」 設定 hadoop-0.20.2-tools.jar Javadoc location 為「file:/opt/hadoop/docs/api」 完成畫面如下圖所示

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 hadoop-0.20.2-ant.jar 設定完成畫面 依此類推,分別設定 hadoop-0.20.2-core.jar 和 hadoop-0.20.2-tools.jar 設定

30

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定 Javadoc location path 路徑為「file:/usr/lib/jvm/java-6-sun/docs/api/

點選右下角之「 」
點選右下角之「
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 Javadoc location path 路徑為「 file:/usr/lib/jvm/java-6-sun/docs/api/ 」

31

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

設定 Hadoop 環境資訊

  • (a) Location name (可任意設置) 本文件設為「hadoop

  • (b) Map/Recuce Master 的部分: Host 設為「localhostPort 設為「9001

  • (c) Use M/R Master host 的部分: Host 設為「localhostPort 設為「9000

  • (d) User name (需與文件第 11 頁和第 12 頁步驟中之 user name 相同) 本文件設為「chihua

完成後點選「Finish」完成專案環境設定

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 設定 Hadoop 環境資訊 (a) Location name (

32

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(5)

MapReduce 程式開發 點選「File\New\Mapper」產生 Mapper 類別

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (5) MapReduce 程式開發 點選「 File\New\Mapper 」產生 Mapper

設定 Mapper 類別資訊 本文件之 Package 設為「wordcount」,Name 設為「mapper

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (5) MapReduce 程式開發 點選「 File\New\Mapper 」產生 Mapper

33

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

輸入「mapper.java」的內容

package wordcount; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper;

public class mapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one);

 

}

}

}

 

完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入「 mapper.java 」的內容 package wordcount; import java.io.IOException;

34

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

點選「File\New\Reducer」產生 Reducer 類別

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\New\Reducer 」產生 Reducer 類別 設定 Reducer

設定 Reducer 類別資訊 本文件之 Package 設為「wordcount」,Name 設為「reducer

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\New\Reducer 」產生 Reducer 類別 設定 Reducer

35

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

輸入「reducer.java」的內容

package wordcount; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Reducer;

public class

reducer extends Reducer<Text,

IntWritable, Text,

IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get();

} result.set(sum); context.write(key, result);

}

}

完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 輸入「 reducer.java 」的內容 package wordcount; import java.io.IOException;

36

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

點選「File\New\MapReduce Driver」產生 MapReduce Driver 類別

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\New\MapReduce Driver 」產生 MapReduce Driver 類別

設定 MapReduce Driver 類別資訊 本文件之 Package 設為「wordcount」,Name 設為「WordCount

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 點選「 File\New\MapReduce Driver 」產生 MapReduce Driver 類別

37

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

輸入「WordCount.java」的內容

package wordcount;

import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser;

public class WordCount {

public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>");

System.exit(2);

} Job job = new Job(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(mapper.class);

job.setCombinerClass(reducer.class); job.setReducerClass(reducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); System.exit(job.waitForCompletion(true) ? 0 : 1);

}

}

38

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 完成畫面 (6) MapReduce 程式編譯 於專案點選滑鼠右鍵,選擇「 Run As\Run

(6)

MapReduce 程式編譯 於專案點選滑鼠右鍵,選擇「Run As\Run on Hadoop」進行編譯

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 完成畫面 (6) MapReduce 程式編譯 於專案點選滑鼠右鍵,選擇「 Run As\Run

39

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

(7)

MapReduce 程式編譯(Makefile 方式) 於專案路徑下產生 Makefile 檔案 本文件以「/home/chihua/workspace/woudcount」為例

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (7) MapReduce 程式編譯 (Makefile 方式 ) 於專案路徑下產生

輸入 Makefile 內容

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 (7) MapReduce 程式編譯 (Makefile 方式 ) 於專案路徑下產生

40

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

Makefile 內容如下

JarFile="wordcount.jar"

MainFunc="wordcount.WordCount"

LocalOutDir="/tmp/output"

HADOOP_BIN="/opt/hadoop/bin"

all:jar run output clean

jar:

 

jar -cvf ${JarFile} -C bin/ .

run:

${HADOOP_BIN}/hadoop jar ${JarFile} ${MainFunc} input output

clean:

${HADOOP_BIN}/hadoop fs -rmr output

output:

rm -rf ${LocalOutDir} ${HADOOP_BIN}/hadoop fs -get output ${LocalOutDir} gedit ${LocalOutDir}/part-r-00000 &

help:

@echo "Usage:" @echo " make jar @echo " make clean @echo " make run @echo " make output @echo " make help

- Build Jar File." - Clean up Output directory on HDFS." - Run your MapReduce code on Hadoop." - Download and show output file" - Show Makefile options."

@echo " " @echo "Example:" @echo " make jar; make run; make output; make clean"

41

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

於專案路徑下輸入「make」進行編譯和執行

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 於專案路徑下輸入「 make 」進行編譯和執行 MapReduce 程式執行過程 第 42

MapReduce 程式執行過程

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 於專案路徑下輸入「 make 」進行編譯和執行 MapReduce 程式執行過程 第 42
雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 於專案路徑下輸入「 make 」進行編譯和執行 MapReduce 程式執行過程 第 42

42

雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華

MapReduce 程式完成畫面

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 MapReduce 程式完成畫面 MapReduce 程式執行結果 第 43 頁

MapReduce 程式執行結果

雲端運算 -Hadoop 實作開發入門 ( 結合 Eclipse 整合開發環境 ) 編輯者:陳志華 MapReduce 程式完成畫面 MapReduce 程式執行結果 第 43 頁

43