上一課講了如何在一台機器上建立Hadoop環境,我們只配置了一個NHName Node, 這個Name Node裡麵包含了我們所有Hadoop的東西,包括Name Node, Secondary Name Node, Job Tracker, Task Tracker,這一課講解如何把上述配置放到不同機器上,從而構建一個分布式的hadoop配置。
1. hadoop分布式安裝概覽
a) 2-10個nodes:Name Node, Job Tracker, Secondary Name Node都可以放在一台機器上,所有的Data Node和Task Tracker放在其他機器上
b) 10-40個nodes: 可以把Secondary Name Node分開來
c) 100+ nodes: 所有的Node和Trackers都分開放,並且添加rack awareness支援,同時需要各類最佳化設定。
本課的流程:
配置好ssh到所有的機器上,使其可以免輸入密碼串連(如同上一課所述)
配置好masters和slaves
配置好所有的*-site檔案
學習使用命令來啟動,控制和關閉Hadoop(常用指令碼說明如)。
2. 配置Hadoop到2-10個節點上
這個圖很帥,我們在HN Client機器上來控制所有的Hadoop機器,每個機器給一個視窗(已經通過ssh連結到每台機器了,連結方式見上一課)。
第一步:取消所有機器上面的ssh密碼訪問
ssh-copy-id -i $HOME/.ssh/id-rsa.pub nuggetuser@HNData1
把這個檔案拷貝到所有的HNData和Secondary Name Node上面。這樣就可以無密碼登陸了。
第二步:配置Master和Slaves
所有的設定檔都在/usr/local/hadoop/conf檔案夾下面
配置好masters來指向Secondary Name Node, 然後配置slaves檔案指向所有的HNData Node
Master檔案預設的是localhost
用任何編輯器開啟masters檔案,刪除localhost, 輸入HN2ndName (就是你Secondary Name Node 的名稱)
同樣,編輯slaves檔案,把所有的HNData Node名稱輸入
第三步:配置所有的Data Node,讓它們指向Name Node,所有的Task Tracker指向Job Tracker
通過core-site.xml配置前者,通過mapred-site.xml配置後者
在HNData Node配置core-site.xml如下(因為我們是直接把上次的機器配置拷貝進來的,所以可以發現這個檔案已經配置過了,如下:)
配置mapred-site.xml如下:
上面的配置應該已經是這樣了,不過最好還是檢查好每一個Data Node中的配置是不是這樣
第四步:重新格式化Name Node
hadoop namenode -format
第五步:配置完成了,可以試著看看能否啟動
start-dfs.sh 這個命令啟動所有的Name Nodes和Data Nodes,可以使用jps命令來查看是否成功啟動了。
start-mapred.sh 這個命令啟動所有的Job Trackers和Task Trackers, 同樣使用jps來檢測是否啟動了,如果沒有成功,可以去看看logs檔案
3. 啟動和關閉Hadoop各部分的命令
如果要刪除一個node,可以建立一個excludes檔案,在裡面輸入你不想要的node名稱,比如HNData3.
然後配置HN Name Node中core-site.xml如下(在最後添加一個property)
同樣可以建立一個includes檔案來指定包含哪些節點
配置完成後,啟用配置:
hadoop dfsadmin -refreshNodes
我們可以在hnname:50070上面看到被排除的Node
運行rebalancer命令
start-balancer.sh
關閉Job Tracker, Task Tracker:
stop-mapred.sh
關閉Name Node, Data Nodes:
stop-dfs.sh
如果要同時啟動HNName Node, Data Node, Job Tracker, Task Tracker,則直接輸入:
start-all.sh