= 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 的虛擬機器