上一課講了怎樣在一臺機器上創建Hadoop環境。咱們僅僅配置了一個NHName Node, 這個Name Node裏面包括了咱們所有Hadoop的東西。包括Name Node, Secondary Name Node, Job Tracker, Task Tracker,這一課解說怎樣把上述配置放到不一樣機器上。從而構建一個分佈式的hadoop配置。node
1. hadoop分佈式安裝概覽ssh
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支持,同一時候需要各種優化設置。oop
本課的流程:學習
配置好ssh到所有的機器上。使其可以免輸入password鏈接(如同上一課所述)優化
配置好masters和slavesspa
配置好所有的*-site文件orm
學習使用命令來啓動。控制和關閉Hadoop(常常使用腳本說明例如如下圖)。xml
2. 配置Hadoop到2-10個節點上
這個圖很是帥。咱們在HN Client機器上來控制所有的Hadoop機器。每個機器給一個窗體(下圖已經經過ssh連接到每臺機器了,連接方式見上一課)。
第一步:取消所有機器上面的sshpassword訪問
ssh-copy-id -i $HOME/.ssh/id-rsa.pub nuggetuser@HNData1
把這個文件複製到所有的HNData和Secondary Name Node上面。這樣就可以無password登錄了。
第二步:配置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