天天看點

《深入了解大資料:大資料處理與程式設計實踐》一一2.3 叢集分布式Hadoop系統安裝基本步驟

本節書摘來自華章計算機《深入了解大資料:大資料處理與程式設計實踐》一書中的第2章,第2.節,作者 主 編:黃宜華(南京大學)副主編:苗凱翔(英特爾公司),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

hadoop安裝時對hdfs和mapreduce的節點允許用不同的系統配置方式。在hdfs看來,節點分别為主要節點namenode和資料存儲節點datanode,其中namenode隻有一個,datanode可以有多個。在mapreduce看來,節點又可以分為作業主要節點jobtracker和任務執行節點tasktracker,其中jobtracker隻有一個,tasktracker可以有多個。namenode和jobtracker可以部署在不同的機器上,也可以部署在同一台機器上,但一般中小規模的叢集通常都把namenode和jobtracker安裝配置在同一個主要伺服器節點上。部署namenode和jobtracker的機器是master(主伺服器),其餘的機器都是slaves(從伺服器)。詳細的安裝和配制過程如下。

2.3.1 安裝和配置jdk

叢集分布式hadoop系統的安裝首先也需要在每台機器上安裝jdk。和單機僞分布式一樣,我們采用的版本為jdk-6u23-linux-x64。在叢集中的每台機器上安裝jdk,步驟如下:

1)将jdk-6u23-linux-x64-rpm.bin拷貝到所需要的安裝目錄下,如/usr/jdk。

2)執行./jdk-6u23-linux-x64-rpm.bin安裝檔案。

3)配置java_home以及class_path,vi進入/etc/profile,在檔案最後加上如下語句:

儲存退出,執行source /etc/profile使得配置檔案生效。

4)執行java-version檢視目前版本配置有沒有生效。

5)執行以下指令分别進行編譯和執行,檢視結果是否正确。

2.3.2 建立hadoop使用者

在所有機器上建立相同的使用者名,例如名為“hadoop”的使用者名。這一步使用如下指令實作:

成功建立hadoop使用者後,輸入的密碼就是該使用者的密碼。

2.3.3 下載下傳安裝hadoop

$tar –xzvf hadoop-1.2.1.tar.gz

2.3.4 配置ssh

該配置主要是為了實作在機器之間通路時免密碼登入。在所有機器上建立.ssh目錄,執行如下指令:

在namenode上生成密鑰對,執行如下指令:

然後一直按鍵,就會按照預設的選項将生成的密鑰對儲存在.ssh/id_rsa中。接着執行如下指令:

最後進入所有機器的.ssh目錄,改變authorized_keys檔案的許可權限:

這時從namenode向其他機器發起ssh連接配接,隻要在第一次登入時需要輸入密碼,以後則不再需要輸入密碼。

2.3.5 配置hadoop環境

要在所有機器上配置hadoop,首先在namenode上進行配置,執行如下的解壓縮指令:

hadoop的配置檔案主要存放在hadoop安裝目錄下的conf目錄中,主要有以下幾個配置檔案要修改:

conf/hadoop-env.sh:hadoop環境變量設定。

conf/core-site.xml:主要完成namenode的ip和端口設定。

conf/hdfs-site.xml:主要完成hdfs的資料塊副本等參數設定。

conf/mapred-site.xml:主要完成jobtracker ip和端口設定。

conf/masters:完成master節點ip設定。

conf/slaves:完成slaves節點ip設定。

1.?編輯core-site.xml、hdfs-site.xml和mapred-site.xml

core-site.xml的文檔内容如下所示:

hdfs-site.xml的文檔内容如下所示:

mapred-site.xml的文檔内容如下所示:

2.?編輯conf/masters

修改conf/masters檔案為master的主機名,每個主機名一行,此處即為namenode。

3.?編輯conf/slaves

加入所有slaves的主機名,即datanode1和datanode2。

4.?把hadoop安裝檔案複制到其他節點上

要把hadoop安裝檔案複制到其他節點上,需要執行如下指令:

$scp –r hadoop-1.2.1 datanode1:/home/hadoop

$scp –r hadoop-1.2.1 datanode2:/home/hadoop

5.?編輯所有機器的conf/hadoop-env.sh

将java_home變量設定為各自的java安裝的根目錄。

至此,hadoop已經在叢集上部署完畢。如果要新加入或删除節點,僅需修改所有節點的master和slaves配置檔案。

2.3.6 hadoop的運作

1.?格式化hdfs檔案系統

在初次安裝和使用hadoop之前,需要格式化分布式檔案系統hdfs,操作指令如下:

2.?啟動hadoop環境

啟動hadoop守護程序。在namenode上啟動namenode、jobtracker和secondary namenode,

在datanode1和datanode2上啟動datanode和tasktracker,并用如下jps指令檢測啟動情況:

namenode節點上啟動正常結果如下所示:

使用者也可以根據自己的需要來執行如下指令:

1)start-all.sh:啟動所有的hadoop守護程序,包括namenode、datanode、jobtracker和tasktracker。

2)stop-all.sh:停止所有的hadoop守護程序。

3)start-mapred.sh:啟動map/reduce守護程序,包括jobtracker和tasktracker。

4)stop-mapred.sh:停止map/reduce守護程序。

5)start-dfs.sh:啟動hadoop dfs守護程序,包括namenode和datanode。

6)stop-dfs.sh:停止hadoop dfs守護程序。

要停止hadoop守護程序,可以使用下面的指令:

$bin/stop-all.sh

2.3.7 運作測試程式

下面用一個程式測試能否運作任務,示例程式是一個hadoop自帶的pi值的計算。第一個參數是指要運作的map的次數,第二個參數是指每個map任務取樣的個數。

$hadoop jar $hadoop_home/hadoop-examples-0.20.205.0.jar pi2 5

2.3.8 檢視叢集狀态

當hadoop啟動之後,可以用jps指令檢視一下它是不是正常啟動。在namenode節點上輸入jps指令:

在datanode節點上輸入jps指令:

如果顯示以上的資訊,則hadllop已表示正常啟動。

繼續閱讀