Professional Documents
Culture Documents
一、Hadoop 安裝(單機版)
(1) 準備 Ubuntu 作業系統之環境
(2) 安裝 Openssh-server
輸入:sudo apt-get install openssh-server
備註:本文件操作流程參考自國家高速網路與計算中心雲端運算基礎課程
第1頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
Openssh-server 安裝完成畫面
(3) 設定登入免密碼
輸入:ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
第2頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
產生金鑰畫面
第3頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(4) 登入確認不用輸入密碼
輸入:ssh localhost
第一次登入時,需輸入「yes」
第4頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
進行登出
輸入:exit
登出畫面
第5頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
重新登入確認,此時不用再輸入「yes」
輸入:ssh localhost
進行登出
輸入:exit
第6頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(5) 安裝 java 環境
輸入:sudo apt-get purge java-gcj-compat
安裝 java,並在下面畫面中輸入「Y」繼續安裝
輸入:sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre
第7頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
點選「OK」繼續安裝
點選「Yes」繼續安裝
第8頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
安裝完成畫面
第9頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
下載 Hadoop 套件
輸入: sudo wget 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 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
將解壓縮後資料移動至 hadoop 目錄
輸入:sudo mv hadoop-0.20.2/ hadoop
第 11 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
建立資料夾/var/hadoop
輸入:sudo mkdir /var/hadoop
第 12 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(7) 設定 hadoop-env.sh
切換至 hadoop 目錄
輸入:cd hadoop/
編輯 hadoop-env.sh 內容
輸入:cat >> conf/hadoop-env.sh << EOF
第 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
(8) 設定 core-site.xml
編輯 core-site.xml 內容
輸入:/opt/hadoop$ cat > conf/core-site.xml << EOF
第 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
第 15 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(9) 設定 hdfs-site.xml
編輯 hdfs-site.xml 內容
輸入:/opt/hadoop$ cat > conf/hdfs-site.xml << EOF
輸入以下資訊至 hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
EOF
第 16 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(10) 設定 mapred-site.xml
編輯 mapred-site.xml 內容
輸入:/opt/hadoop$ cat > conf/mapred-site.xml << EOF
輸入以下資訊至 mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
EOF
第 17 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
完成畫面
第 18 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(12) 啟動 Hadoop
輸入:bin/start-all.sh
完成畫面
第 19 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(13) 啟動查運作狀態
連結 http://localhost:50030/,瀏覽 Hadoop 管理介面
第 20 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
連結 http://localhost:50070/,Hadoop DFS 狀態
第 21 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
第 22 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
(3) 開啟 eclipse
連續點選 eclipse 圖案滑鼠左鍵兩下,開啟 eclipse
第 23 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
設定 workspace 路徑,本文件以/home/chihua/workspace 為例
設定視野,點選「 」,並選擇「Other…」
第 24 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
設定為「MapReduce」,並點選「OK」完成設定
(4) 開啟新專案
點選「File\New\Other…」
第 25 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
輸入 Project name,本文件以「wordcount」為例
點選「Configure Hadoop install directory」進行環境設定
第 26 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
點選「Finish」,完成新增專案
第 27 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
點選「File\Properties」,進行專案參數設定
第 28 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
第 29 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
hadoop-0.20.2-ant.jar 設定完成畫面
第 30 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
點選右下角之「 」
第 31 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
設定 Hadoop 環境資訊
完成後點選「Finish」完成專案環境設定
第 32 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
設定 Mapper 類別資訊
本文件之 Package 設為「wordcount」,Name 設為「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;
完成畫面
第 34 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
點選「File\New\Reducer」產生 Reducer 類別
設定 Reducer 類別資訊
本文件之 Package 設為「wordcount」,Name 設為「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);
}
}
完成畫面
第 36 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
第 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;
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 整合開發環境) 編輯者:陳志華
完成畫面
第 39 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
輸入 Makefile 內容
第 40 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
Makefile 內容如下
JarFile="wordcount.jar"
MainFunc="wordcount.WordCount"
LocalOutDir="/tmp/output"
HADOOP_BIN="/opt/hadoop/bin"
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 - Build Jar File."
@echo " make clean - Clean up Output directory on HDFS."
@echo " make run - Run your MapReduce code on Hadoop."
@echo " make output - Download and show output file"
@echo " make help - Show Makefile options."
@echo " "
@echo "Example:"
@echo " make jar; make run; make output; make clean"
第 41 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
於專案路徑下輸入「make」進行編譯和執行
MapReduce 程式執行過程
第 42 頁
雲端運算-Hadoop 實作開發入門(結合 Eclipse 整合開發環境) 編輯者:陳志華
MapReduce 程式完成畫面
MapReduce 程式執行結果
第 43 頁