本節書摘來自華章計算機《深入了解大資料:大資料處理與程式設計實踐》一書中的第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已表示正常啟動。