= 2012-10-02 =
[[PageOutline]]
{{{
#!html
快速搭建 Hadoop 單機開發環境與雲端叢集架設實務
}}}
= 演講摘要 =
{{{
#!text
Hadoop經過七年的開發,終於在 2011 年 12 月釋出 1.0 版本,象徵著 Hadoop 已成熟到能支持企業營運需求。
即便如此,目前 Hadoop 最令人怯步的關鍵在於「不夠友善」。初學者往往第一個要面對的問題是缺乏佈建叢集
所需的背景知識。
在台灣,多數資訊從業人員仍以 Windows 為主要的作業系統。本次演講將跟各位聽眾分享一個名為 Hadoop4Win
的懶人包安裝程式,除了可以作為學習 Hadoop 生態系的第一步外,也可以作為開發 Hadoop 程式的實驗環境。
其次將跟各位介紹如何使用 hiCloud 搭建 Hadoop 叢集。
}}}
= 進行方式 =
* 以下的展示,將多數跑在 hiCloud 上。為了避免有圖利 hiCloud 之嫌,最後會跟各位介紹國網中心的 [http://easycloud.nchc.org.tw EasyCloud] 服務。
* 不過這裡要先宣告的是講者跟 hiCloud 沒有利害關係,純粹只是想讓大家有一個標準化的平台可以去試用一些軟體。
* 其次,在試用過 hicloud 之後,我們學習到要提供雲端服務並不容易,同樣地使用雲端服務也不容易。
* 對於開發者來說,若能夠更'''自動化地進行用 Script 設定好虛擬機器''',那才是真正好用的雲端服務。
* 如果您想看較詳盡的文字說明,請參考 [raw-attachment:wiki:jazz/hidoop:12-07-24_hiCloud_Hadoop.pdf 實作步驟簡介文章 PDF]
== Background : 申請 hicloud ==
[[PageOutline]]
* 首先連到 http://hicloud.hinet.net
* [[Image(jazz/12-10-02:Fig_15-1.png)]]
* [[Image(jazz/12-10-02:Fig_15-2.png)]]
* 若您是中華電信用戶,您應該可以用 hinet 帳號或者手機登入。
* 若您不是中華電信用戶,請點選「加入會員」
* [[Image(jazz/12-10-02:Fig_16.png)]]
* 如果您看不到操作介面,請安裝 Flash
* Jazz: '''非常不開放的架構,採用 Flash 撰寫,效率很差,也阻礙其他人撰寫自動化程式!!!'''
* 接著,請點選「雲運算」
* [[Image(jazz/12-10-02:Fig_17.png)]]
* 點選左方「虛擬主機」
* [[Image(jazz/12-10-02:Fig_18.png)]]
* 點選左側上方「申請」
* [[Image(jazz/12-10-02:Fig_19.png)]]
* 選擇要申請的虛擬主機類型,首先,我這次要選取的是 Windows,因為要展示 Hadoop4Win。
* [[Image(jazz/12-10-02:Fig_20.png)]]
== Demo 1 : hadoop4win ==
[[PageOutline]]
* 現在我們啟動了一台 Windows 2003 的虛擬機器。(這樣才不會搞爛大會的公用電腦,愛怎麼操就用力操吧~)
* 因為 IE 版本的問題,軟體不太好從 SourceForge 下載,所以我把程式放在底下的 URL
* http://cloud.nchc.org.tw/~jazz/exe
* 我們下載 hadoop4win 0.1.5 的版本,以及 pietty SSH Client 後續我們展示會用到。
* [[Image(jazz/12-10-02:Fig_01.jpg)]]
* [[Image(jazz/12-10-02:Fig_02.jpg)]]
* [[Image(jazz/12-10-02:Fig_03.jpg)]]
* [[Image(jazz/12-10-02:Fig_04.jpg)]]
* [[Image(jazz/12-10-02:Fig_05.jpg)]]
* [[Image(jazz/12-10-02:Fig_06.jpg)]]
* [[Image(jazz/12-10-02:Fig_07.jpg)]]
* 在安裝過程中,由於 Hadoop 會嘗試開啟一些連線埠(Port),您必須允許開啟。
* [[Image(jazz/12-10-02:Fig_09.png)]]
* 若安裝完成,您可以在「開始」選單看到 hadoop4win 的相關選項:
* [[Image(jazz/12-10-02:Fig_08.jpg)]]
* 由於 Cygwin 的一個 Bug ,我們必須將 Java Process 開在另一個視窗,請先點選 start-hadoop
* [[Image(jazz/12-10-02:Fig_10.png,width=800)]]
* 檢驗系統是否正常開啟的方法是連線 http://localhost:50070 跟 http://localhost:50030
* [[Image(jazz/12-10-02:Fig_11.png,width=800)]]
* [[Image(jazz/12-10-02:Fig_12.png,width=800)]]
* 確認系統運行正常後,您可以點選 hadoop4win,於命令列中執行以下指令:
{{{
jps
}}}
{{{
hadoop fs -ls
}}}
{{{
cd /opt/hadoop
hadoop fs -put conf-pseudo input
hadoop fs -ls
}}}
* [[Image(jazz/12-10-02:Fig_13.png,width=800)]]
== Demo 2 : hicloud-hadoop ==
[[PageOutline]]
* 接著,礙於時間跟財力,這次我們只開啟三台 Linux 主機來示範 hicloud 搭建 Hadoop 的流程。
* [[Image(jazz/12-10-02:Fig_20.png)]]
* [[Image(jazz/12-10-02:Fig_21.png)]]
* [[Image(jazz/12-10-02:Fig_22.png)]]
* [[Image(jazz/12-10-02:Fig_23.png)]]
* 確認狀態為「已申裝」
* Jazz:'''就是開始算錢了啦~沒開機也算錢哦!特別注意!跟 Amazon 有開機才算錢的邏輯是不同的'''
* [[Image(jazz/12-10-02:Fig_24.png)]]
* 接著我們必須下載密碼檔。
* [[Image(jazz/12-10-02:Fig_25.png)]]
* 開啟 CSV 格式的密碼檔。
* [[Image(jazz/12-10-02:Fig_26.png)]]
* 用 PieTTY 連線到第一台,並輸入 CSV 裡的 root 密碼
* [[Image(jazz/12-10-02:Fig_27.png)]]
* [[Image(jazz/12-10-02:Fig_28.png)]]
* 我們需要做一些前置準備,首先我們要產生 ssh 金鑰
* 倘若您在自己的 Linux Server 產生金鑰也可以,這樣有助於您管理多台機器。
{{{
ssh-keygen -t rsa -P ""
}}}
* 其次,為了讓第一台主機可以幫您用 Expect 幫您輸入預設密碼連入一台以上的虛擬機器,我們會用到 perl-expect
{{{
apt-get install libexpect-perl
}}}
* [[Image(jazz/12-10-02:Fig_29.png)]]
* [[Image(jazz/12-10-02:Fig_30.png)]]
* 接著請下載 hicloud-hadoop 的 0.0.1 壓縮檔
{{{
wget http://nchc.dl.sourceforge.net/project/hidoop/0.0.1/hicloud-hadoop-0.0.1.tar.gz
tar zxvf hicloud-hadoop-0.0.1.tar.gz
mkdir -p hicloud-hadoop/conf
}}}
* 請注意,這個腳本只有在 Ubuntu 10.04 上測試過。
* 若有興趣原始碼,請參考 http://github.com/jazzwang/hicloud-hadoop
* 接著,請解開壓縮檔。並開始著手撰寫密碼設定檔。conf/master 是 NameNode 與 JobTracker。Slave 是除了 master 之外,其他台機器的 IP, username 跟密碼。
{{{
tar zxvf hicloud-hadoop-0.0.1.tar.gz
mkdir -p hicloud-hadoop/conf
}}}
* 您可以用以下的指令來產生 master 檔,或者從 CSV 檔案拷貝到記事本,再用 PieTTY 上傳到第一台。
{{{
cat > hicloud-hadoop/conf/master << EOF
.... 貼上您的內容 ...
EOF
}}}
* [[Image(jazz/12-10-02:Fig_31.png)]]
* 您可以用以下的指令來產生 master 檔,或者從 CSV 檔案拷貝到記事本,再用 PieTTY 上傳到第一台。
{{{
cat > hicloud-hadoop/conf/slave << EOF
.... 貼上您的內容 ...
EOF
}}}
* [[Image(jazz/12-10-02:Fig_32.png)]]
* 接著切換到 hicloud-hadoop 目錄,並執行 install-ubuntu
{{{
cd hicloud-hadoop
./install-ubuntu
}}}
* 安裝完畢後,您會看到如下的訊息,告知您可以點選哪兩個連結檢查 Hadoop 叢集是否已經安裝好了。
* [[Image(jazz/12-10-02:Fig_33.png)]]
* [[Image(jazz/12-10-02:Fig_34.png)]]
* [[Image(jazz/12-10-02:Fig_35.png)]]
== Demo 3 : Ezilla ==
[[PageOutline]]
* 示範如何到 http://easycloud.nchc.org.tw 申請帳號
* 示範如何透過瀏覽器看遠端機器的 VNC 畫面,或者用 PieTTY ssh 到 http://easycloud.nchc.org.tw 的虛擬機器