Hadoop 叢集佈建初探 - 以 hiCloud 為例
國家高速網路與計算中心 王耀聰 副研究員
(續上篇)
Hadoop叢集版初探 -hiCloud Ubuntu Linux 版
上個小節我們介紹了如何在Windows上建立一個Hadoop的實驗環境,然而Windows版本存在著許多小問題,像是Cygwin的路徑與Java
Runtime認知的Windows路徑不同,因此許多時候,您在下指令的時候,還必須要透過cygpath指令將Cygwin路徑轉換成Windows路徑,相當不便。其次,假設您想要把多台hadoop4win串起來,有許多先決條件,像是必須要有不同的電腦名稱、要有相同的使用者名稱跟檔案存取權限。因此,一般我們在提供商業運轉的Hadoop環境時,仍舊會採用Linux版本。
雲端運算的五大基礎特徵中,第一點是「隨需自助服務」,其背後隱藏著「標準化」與「自動化」的精神。本文為了讓每位讀者能有標準化的實作環境,免除不同Linux版本造成的操作問題,此次採用的是中華電信hiCloud的Ubuntu 10.04虛擬機器當作示範架設Hadoop叢集版的環境。底下將示範如何在十台Ubuntu 10.04的虛擬機器上,建置一個Hadoop叢集。由於Hadoop安裝的指令繁瑣,筆者這裡提供一個自動化的安裝腳本程式,各位可至http://github.com/jazzwang/hicloud-hadoop或http://hidoop.sf.net下載原始碼。以下我們用圖解的方式,說明如何使用hicloud開啟十台虛擬機器,並設定成Hadoop叢集。
![]() STEP 1:請連線至hicloud.hinet.net 並點選右上角「客戶登入」 |
![]() STEP 2:若您不是中華電信用戶, 請先加入會員,然後用取得帳號登入 |
![]() STEP 3:點選上方「雲運算」 |
![]() STEP 4:點選左方「虛擬主機」 |
![]() STEP 5:點選左上角「申請」 |
![]() STEP 6:確認同意中華電信hicloud租約 選擇「Linux微運算型XS」,按「下一步」 |
![]()
STEP 7:選擇「Ubuntu 10.0,32bit」 |
![]() STEP 8:用hdp命名,產生10台虛擬機器 |
![]() STEP 9:等待申裝狀態變為「已申裝」 |
![]() STEP 10:請確認供裝狀態變為「已申裝」 點左上角「全選」,並選「開機」 |
![]() STEP 11:點選右上角「預設密碼」,將password.zip儲存到桌面 |
![]() STEP 12:用預設密碼解壓縮password.zip並匯入CSV格式的密碼檔案 |
![]() STEP 13:我們從密碼表中挑選第一台 用PieTTY連線到該台虛擬機器 |
![]()
STEP 14:預設請使用root帳號登入, 密碼請根據您的密碼表輸入六碼預設密碼 |
做到這邊,我們已經把十台虛擬機器開機。請從hiCloud介面上確認每一台虛擬機器都已經進入「已開機」的狀態,接著使用您慣用的SSH連線軟體,這裡我們使用的是PieTTY,可以自http://ntu.csie.org/~piaip/pietty/ 下載。由於hicloud-hadoop自動安裝腳本是針對Linux環境撰寫的,因此我們直接挑選其中一台來進行安裝。您也可以在自己的Linux環境上執行以下的步驟。在執行hicloud-hadoop自動安裝腳本前,有一些前置作業:(1)產生SSH連線用的金鑰;(2)安裝Perl的Expect.pm函式庫,因為我們會使用Expect來幫忙您自動填入預設密碼,登入另外九台虛擬機器,並進行Hadoop安裝作業。現在請您在登入第一台虛擬機器的PieTTY視窗內中輸入以下兩個指令:
~# ssh-keygen -t rsa -P "" ~# apt-get install libexpect-perl |
接下來,讓我們下載hicloud-hadoop自動安裝腳本,並且解壓縮安裝檔。然後在hicloud-hadoop目錄底下建一個conf子目錄。
~# 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 |
接著,使用記事本先編輯兩個檔案,一個叫master,一個叫slave。可用PieTTY或WinSCP上傳這兩個檔案到hicloud-hadoop/conf 底下,或參考底下的作法在conf底下建立兩個設定檔。
~# cat > hicloud-hadoop/conf/master << EOF 203.66.14.171 root 800773 EOF ~# cat > hicloud-hadoop/conf/slave << EOF 203.66.14.40 root 154737 ................. 210.65.10.139 root 367578 EOF |
以上的IP、帳號、密碼三個欄位,您可以直接從CSV貼到記事本,加入中間的空白,在貼到命令列。最後切換到hicloud-hadoop目錄,然後執行 install-ubuntu 自動安裝腳本。
~# cd hicloud-hadoop hicloud-hadoop# ./install-ubuntu |
從密碼表中挑選第一台的IP、帳號、密碼 貼到記事本,補上空格,然後轉貼到master |
從密碼表中挑選剩下的IP、帳號、密碼 貼到記事本,補上空格,然後轉貼到slave |
等自動安裝腳本執行完畢後,您會看到類似底下的訊息。此時,點選兩個網址,就會看到Hadoop的HDFS NameNode與MapReduce JobTracker網頁。
|
|
|
|
|
雲端精算師:好的設計可以省下更多錢
做到這邊,各位讀者應該可以繼續在hiCloud的十台虛擬機器上練習在Hadoop4Win的指令。不過這裡要提醒的一件很重要的事情:「不同於Amazon EC2有開機才計價,hiCloud是從申裝開始計費,退租才停止計費,就像您租用手機門號一樣,不管有沒有開機都會計費」。因此建議您如果口袋不夠深的話,練習完麻煩一台一台把虛擬機器退租吧!一節課程大約花個兩三個小時,14塊台幣/小時,跟買杯超商咖啡差不多,這就是雲端帶給各位的新學習環境。
免得收到帳單會很痛! |
學Hadoop叢集佈署 |
倘若您手邊有兩台以上的實體機器,或者多核心效能強大的伺服器,不妨安裝VirtualBox虛擬化軟體,在一台電腦上建立兩至三台Ubuntu 10.04的Linux環境,各位聰明的讀者可以透過上述的步驟來安裝您專屬的Hadoop叢集,就算是一個小型的私有雲了。
在本文最後,筆者想提出幾個關於「雲端精算師」的軟體設計精神,與各位讀者分享。目前hicloud-hadoop 0.0.1版本是循序安裝,因此機器愈多,安裝時間愈長。未來將加入多執行緒的程式碼,讓安裝流程能同時進行。對hiCloud這種按時計費的公有雲而言,如何節省安裝時間變得很重要。未來hiCloud若能讓使用者建立自己專屬的虛擬機器範本,相信能有效降低各位讀者荷包的負擔。
其次,中華電信的計價模式還包含網路流量,因此如何減少網路傳輸也是採用公有雲服務應該要思考的第二個重點。目前的腳本每一台虛擬機器都會重複下載Java與Hadoop安裝檔。若能把Hadoop安裝檔先存在同一個公有雲提供的「儲存服務」,讓資料來自於「內部網路」而非「網際網路」,不納入流量計費,那也是對用戶有利的計價模式。
最後,若能夠把要處理的事情變成自動化,計算完就關閉虛擬機器,以上這些考量就是在雲端時代程式設計師應該具備的「雲端精算師」精神,擁有節省成本的思考模式將是您未來在職場上的新競爭力!