Hadoop集群配置全程跟蹤報道
本節和大家學習一下Hadoop集群配置以及在配置過程中遇到的一些問題,相信通過本節的介紹大家對Hadoop的配置有新的認識,讓我們一來學習Hadoop集群配置吧。
Hadoop集群配置
hadoop的單機配置在hadoop的文檔中已經有了詳細的介紹,當然,集群的配置也有詳細描述(Hadoop的中文文檔:http://www.hadoop.org.cn/document/cn/r0.18.2/)。但在集群配置中必然會遇到各種問題,下面我就描述下我配置Hadoop集群的過程和遇到的問題,其中解釋不清楚或者不正確的地方,還請諒解。
一.Hadoop配置:
p=vu<xXtD
首先,是準備工作,就是在各個節點安裝相應的軟件。
GU\}}j]
1.本次Hadoop集群配置中,使用VMware虛擬出三個虛擬機(Ubuntu8.04TL),三個節點的用戶名都是hadoop,使用橋接,這樣各節點跟主機使用相同的IP段,可以通過外界訪問namenode。三個節點的主機名分別是一個namenode節點:NameNode(ip:125.216.227.**1),兩個datanode節點:DataNode1(ip:125.216.227.**2)和DataNode2(125.216.227.**3)。然后在網絡中配置好各節點的名稱。
sHx>UvN6
2.本次Hadoop集群配置采用截至到現在最穩定的0.18版本的Hadoop,將Hadoop解壓到Hadoop部署目錄結構如下:/home/hadoop/HadoopInstall,所有的hadoop版本放在這個目錄中。將hadoop0.18.0壓縮包解壓至HadoopInstall中,為了方便以后升級,建議建立一個鏈接指向要使用的hadoop版本,不妨設為hadoop:$ln-shadoop0.18.0hadoop
>Q+Bw"W<
3.在各節點安裝好jdk和ssh,jdk需加入環境變量。因為在Hadoop啟動以后,Namenode是通過SSH(SecureShell)來啟動和停止各個節點上的各種守護進程的,這就需要在節點之間執行指令的時候是不需要輸入密碼的方式,故我們需要配置SSH使用無密碼公鑰認證的方式。該認證對于hadoop的集群配置只需單向認證即可,方法如下:
(1)在namenode節點下通過如下命令:
$scpauthorized_keys(slaveip):/home/username/.ssh#把slave的授權文件拷貝到master3>Ts7wM
$catid_dsa.pub>>authorized_keys
$chmode644authorized_key
(2)在datanode節點下:&R:$h*Wt|
$chmode644authorized_key
V)CS,w
4.現在開始配置hadoop的conf目錄下的配置文件:先配置環境配置文件:hadoop-env.sh,具體配置請查看Hadoop文檔。在此貼出我的部分配置信息(其他默認)如下,以供參考:
2`qO'V3Q
#Thejavaimplementationtouse.Required.[hE09W
exportJAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07e)kN%JqW
exportHADOOP_HOME=/home/hadoop/HadoopInstall/hadoop?z>7&
exportHADOOP_CONF_DIR=$HADOOP_HOME/conf5(0f"zY
exportHADOOP_PID_DIR=/home/hadoop/HadoopInstall/PID@~v|t{G
exportPATH=$PATH:$HADOOP_HOME/bind?G~k[C!a
#ExtraJavaCLASSPATHelements.Optional.m%Ah]x;
#exportHADOOP_CLASSPATH=
再配置hadoop-site.xml。具體配置同樣查看文檔,代碼:
(1)NameNode的配置:
(2)DataNode的配置信息:
(3)配置slave和master文件,slave文件保存了datanode的ip信息,而master則保存了namenode的ip信息。
tHlKo0S$0
然后是查看Hadoop集群配置是否配置成功,并啟動hadoop。
配置好后先在/home/hadoop/HadoopInstall下建立/tmp目錄。然后在hadoop的bin目錄下:
$jps
會返回該節點的配置信息,如下:
20198NameNode
20318SecondaryNameNode
20684Jps
20383JobTracker
同樣,在datanode也會返回該datanode解嗲的信息:
14784TaskTracker
17044Jps
14683DataNode
CG!/Lbd
然后進入hadoop目錄下:
$bin/hadoopnamenode-format#在NameNode格式化一個新的分布式文件系統thWQU"z4
$bin/start-dfs.sh#啟動namenode上的hadoop
$bin/start-mapred.sh#啟動JobTracker^MJTlRUb
$netstat-tnl#查看50070,54310,50090端口是否啟動
@]$qJFXx
瀏覽NameNode和JobTracker的網絡接口,它們的地址默認為:
NameNode-http://localhost:50070/
JobTracker-http://localhost:50030/
最后將配置好的Hadoop打包發送到各個slave:
xlQl1lOX
$cd/home/hadoop/HadopInstallHZ$q`e
$tar-cvfhadoop-0.18.0.tar.gzhadoop-0.18.0/0Y7b$~n'Y
$scp-rhadoop-0.18.0.tar.gzhadoop@slave1:/home/hadoop/HadopInstallL@>+iZSO
$scp-rhadoop-0.18.0.tar.gzhadoop@slave2:/home/hadoop/HadopInstall
二.Hadoop集群配置中遇到的問題
(1)在重新格式化一個新的分布式文件時,需要將你NameNode上所配置的dfs.name.dir這一namenode用來存放NameNode持久存儲名字空間及事務日志的本地文件系統路徑刪除,同時將各DataNode上的dfs.data.dir的路徑DataNode存放塊數據的本地文件系統路徑的目錄也刪除。如本此配置就是在NameNode上刪除/home/hadoop/NameData,在DataNode上刪除/home/hadoop/DataNode1和/home/hadoop/DataNode2。
這是因為Hadoop在格式化一個新的分布式文件系統時,每個存儲的名字空間都對應了建立時間的那個版本(可以查看/home/hadoop/NameData/current目錄下的VERSION文件,上面記錄了版本信息),在重新格式化新的分布式系統文件時,最好先刪除NameData目錄。必須刪除各DataNode的dfs.data.dir。這樣才可以使namedode和datanode記錄的信息版本對應。
否則會出現能夠啟動datanode,但無法訪問,也無法結束的錯誤,如下:
hadoop@HadoopHost:~/HadoopInstall/hadoop$bin/stop-all.sho(iv=(o
stoppingjobtrackerlLD-QO}/
125.216.227.**2:stoppingtasktrackerUO%VuC5B
125.216.227.**3:stoppingtasktracker@R+bR<}]
stoppingnamenodey>+xdD0+
125.216.227.**2:nodatanodetostoprN3i5.*/t
125.216.227.**3:nodatanodetostop7/*a
125.216.227.**1:stoppingsecondarynamenode
以后有問題繼續添加,希望大家予以指教。本節有關Hadoop集群配置方面的內容介紹到這里。
【編輯推薦】