Hadoop集羣
★ Hadoop集羣搭建過程
集羣環境:集羣環境是指局域網中的機器,多臺機器爲了完成同一件事情而協作工作的一種工作模式。每臺機器被稱爲一個節點。
把Hadoop進程安裝到多臺機器上,實現Hadoop的分佈式安裝。
分佈式以虛擬機vmware的複製來克隆多臺機器。
分佈式集羣中,對NameNode和SecondaryNameNode的要求比較高,對內存要求比較大。
★ 節點之間的免密碼登錄
1.重新生成ssh加密文件
hadoop0 hadoop1 hadoop2
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
在hadoop1,hadoop2上:
ssh-copy-id -i hadoop0
在hadoop0上把ssh中的authorized_keys 文件scp到hadoop1,hadoop2中
scp authorized_keys hadoop1:/root/.ssh
scp authorized_keys hadoop2:/root/.ssh
這樣hadoop0 hadoop1 hadoop2中兩兩之間就可以免密碼登錄了
關於authorized_keys文件:
其中存放的是公鑰文件,一臺機器上保存有哪些機器的ssh公鑰,這些機器就可以免密碼登錄到這臺機器。
ssh的原理:
略。
2.在啓用集羣時,要刪除原分佈式節點上的logs和tmp文件,刪除原來格式化HDFS時的元數據文件。然後再格式化hadoop namenode -format
3.關於conf/master conf/slaves
master文件中保存的是SecondaryNameNode的節點
slaves文件中保存的是啓動的是TaskTracker和DataNode的節點
4.在conf/core-site.xml中指定的是Namenode節點的位置
在conf/mapred-site.xml中指定的是JobTracker節點的位置
★ Haoop集羣啓動時的安全模式
安全模式是什麼,集羣在安全模式下幹什麼了?
當集羣啓動的時候,會首先進入到安全模式。安全模式是hadoop集羣的一種保護方式。當系統處於安全模式時,會檢查數據塊的完整性。假設我們設置的副本數(即參數dfs.replication)是5,那麼在dataNode上就應該有5個副本存在,假設只存在3個副本,那麼比率就是3/5=0.6。在配置文件hdfs-default.xml中定義了一個最小的副本率0.999,如圖7-1
圖7-1
我們的副本率0.6明顯小於0.999,因此係統會自動的複製副本到其他dataNode,使得副本率不小於0.999。如果系統中有8個副本,超過我們設定的5個副本,那麼系統也會刪除多於的3個副本。
總體來說,安全模式是hadoop的一種保護機制,用於保證集羣中數據塊的安全性的。
安全模式對我們有什麼影響哪?
這時,不允許客戶端進行任何修改文件的操作,包括上傳文件、刪除文件、重命名、創建文件夾等操作。比如,創建文件時,在源代碼中就有對安全模式的判斷,如圖7-2
圖7-2
當我們在安全模式下進行修改文件操作時,會報出如下錯誤,如圖7-3
圖7-3
正常情況下,安全模式會運行一段時間自動退出的。只需要我們稍等一會就可以了。到底等多長時間哪,我們可以通過50070端口查看安全模式退出的剩餘時間,如圖7-4。
圖7-4
雖然不能進行修改文件的操作,但是可以瀏覽目錄結構、查看文件內容的。
我們可以控制是否進入或者退出安全模式嗎?
在命令行下是可以控制安全模式的進入、退出和查看的,
命令hadoop dfsadmin –safemode get 查看安全模式狀態
命令hadoop dfsadmin –safemode enter 進入安全模式狀態
命令hadoop dfsadmin –safemode leave 離開安全模式狀態
操作如圖7-5所示
圖7-5
安全模式,是hadoop集羣的一種保護機制,在啓動時,最好是等待集羣自動退出,然後再進行文件操作。
★ 動態增加一個節點
1:對要新增加的節點進行配置。包括jdkhosts ssh hadoop等
2:在主節點中conf/slave文件中增加該新節點的hostname
3:單獨啓動新節點的datanode和tasknode
4:在主節點執行腳本 hadoopdfsadmin -refreshNodes
5:通過web頁面,50070端口查看或者通過hadoopdfsadmin -report查看最新的節點是否加載到集羣。
6:均衡Block ./bin/start-balancer.sh
★ 動態刪除一個節點(未驗證)
1.集羣配置
修改conf/hdfs-site.xml文件
<property>
<name>dfs.hosts.exclude</name>
<value>/data/soft/hadoop/conf/excludes</value>
<description>Namesa file that contains a list of hosts that are
notpermitted to connect to the namenode. The full pathname of the
file mustbe specified. If the value is empty, nohosts are
excluded.</description>
</property>
2.定要下架的機器
dfs.hosts.exclude定義的文件內容爲,每個需要下線的機器,一行一個。這個將阻止他們去連接Namenode。如:
hadoop7
3.強制重新加載配置
[root@hadoop5 ~]# hadoop dfsadmin -refreshNodes
它會在後臺進行Block塊的移動
4.關閉節點
等待剛剛的操作結束後,需要下架的機器就可以安全的關閉了。
[root@hadoop0 ~]# hadoop dfsadmin-report
可以查看到現在集羣上連接的節點
正在執行Decommission,會顯示:
Decommission Status : Decommission in progress
執行完畢後,會顯示:
Decommission Status : Decommissioned