集群
- 計算機集群是一種計算機系統,他通過一組松散集成的計算機軟件和硬件連接起來高度緊密地協同完成計算工作。
- 集群系統中的單個計算機通常稱為節點,通常通過局域網連接。
- 集群技術的特點:
1、通過多臺計算機完成同一個工作。達到更高的效率
2、兩機或多機內容、工作過程等完全一樣。如果一臺死機,另一臺可以起作用
hadoop集群的物理分布
?
?
hadoop的分布式安裝大致過程(在《偽分布式安裝Hadoop》基礎上安裝)
1.1 分布結構 主節點(1個,是hadoop0):NameNode、JobTracker、SecondaryNameNode
?從節點(2個,是hadoop1、hadoop2):DataNode、TaskTracker
1.2 各節點重新產生ssh加密文件
1.3 編輯各個節點的/etc/hosts,在該文件中含有所有節點的ip與hostname的映射信息
1.4 兩兩節點之間的SSH免密碼登陸
ssh-copy-id -i hadoop1
scp /root/.ssh/authorized_keys hadoop1:/root/.ssh/
1.5 把hadoop0的hadoop目錄下的logs和tmp刪除
1.6 把hadoop0中的jdk、hadoop文件夾復制到hadoop1和hadoop2節點
scp -r /usr/local/jdk hadoop1:/usr/local/
1.7 把hadoop0的/etc/profile復制到hadoop1和hadoop2節點,在目標節點中執行source /etc/profile
1.8 編輯hadoop0的配置文件slaves,改為從節點的hostname,分別是hadoop1和hadoop2
1.9 格式化,在hadoop0節點執行hadoop namenode -format
1.10 啟動,在hadoop0節點執行start-all.sh
****注意:對于配置文件core-site.xml和mapred-site.xml在所有節點中都是相同的內容。
2.動態的增加一個hadoop節點(將hadoop0變成hadoop0的一個從節點)
stop-all.sh
2.1 配置新節點的環境
2.2 把新節點的hostname配置到主節點的slaves文件中
2.3 在新節點,啟動進程
hadoop-daemon.sh start datanode
hadoop-daemon.sh start tasktracker
2.4 在主節點執行腳本 hadoop dfsadmin -refreshNodes
3.動態的下架一個hadoop節點
kill -9 DataNode進程號
?
*****************************************************************
* ? ? ?集群搭建實際操作步驟在《偽分布式安裝Hadoop》基礎上安裝? ? ? ?*
*****************************************************************
這下面是自己實際搭建過程中的詳細操作步驟:
1、Hadoop集群的搭建步驟(在《偽分布式安裝Hadoop》基礎上):
將之前搭建的偽分布式Hadoop的虛擬機,克隆多個。
VM--->虛擬機--->管理--->克隆--->完整克隆
2、配置克隆的兩個虛擬機的ip和修改三個虛擬機的主機名
配置ip:
hadoop0 192.168.80.100
hadoop1 192.168.80.101
hadoop2 192.168.80.102
IP配置好了,重啟網卡,看是否配置成功。service network restart
修改主機名:
vi /etc/sysconfig/network
修改完主機名后,重啟虛擬機,reboot -h now
修改之前的虛擬機hadoop0主機名:
vi /etc/sysconfig/network ---修改主機名
vi /etc/hosts ---修改ip和主機名的映射文件
修改配置文件里的主機名:
cd /usr/local/hadoop/conf
vi core-site.xml
vi mapred-site.xml
修改完,重啟reboot -h now
將克隆的虛擬機中的一些文件刪除掉:
cd /root/.ssh/
ls
rm -rf *
cd /usr/local/
ls
rm -rf *
將hadoop1和hadoop2中的環境變量也刪除掉:
vi /etc/profile
?
設置三個節點的免密碼登錄:
?
ssh-keygen -t rsa
cd /root/.ssh/
cat id_rsa.pub >> authorized_keys ? ? ?---cat ?XXX ?>> ?YYY:向YYY文件中追加內容XXX
ssh localhost
exit
vi /etc/hosts ---先寫好映射文件
ssh hadoop1 ---再免密碼登錄時才會成功
hadoop0的主機名修改了,所以也要重新設置免密碼登錄!
三個虛擬機之間也應該要互相ping通(互相能訪問):所以每個虛擬機的/etc/hosts中要有三個虛擬機的ip和主機名映射!!
1、手動修改三個虛擬機中的/etc/hosts
vi /etc/hosts
192.168.80.100 hadoop0
192.168.80.101 hadoop1
192.168.80.102 hadoop2
2、然后需要將自己的公鑰復制給對方,這樣自己訪問對方的時候才不會要密碼登錄(注意:要是hadoop1和hadoop2沒有網絡連接,需要關閉虛擬機,重新將mac地址生成一次!)
hadoop0:ssh-copy-id -i hadoop1
ssh hadoop1
hadoop1:可以查看到是否有hadoop0的公鑰
more authorzied_keys
這樣hadoop0訪問hadoop1的時候,就可以直接訪問,不需要輸入hadoop1的密碼了。
同理,在hadoop2中再操作一遍,也能免密碼登錄hadoop1。
這樣在hadoop1中more authorized_keys中就會有三個主機的公鑰。為了簡化操作,可以將其復制給其他兩個主機中:
scp /root/.ssh/authorized_keys hadoop0:/root/.ssh/
scp /root/.ssh/authorized_keys hadoop2:/root/.ssh/
將hadoop0中/usr/local/hadoop/下的logs和tmp刪除掉:
cd /usr/local/hadoop/
rm -rf logs/
rm -rf tmp/
把hadoop0中的jdk、hadoop文件夾復制到其他兩個節點:
scp -r /usr/local/jdk hadoop1:/usr/local/
scp -r /usr/local/jdk hadoop2:/usr/local/
scp -r /usr/local/hadoop hadoop1:/usr/local/
scp -r /usr/local/hadoop hadoop2:/usr/local/
將hadoop0中的環境變量復制到其他兩個節點中:
scp /etc/profile hadoop1:/etc/
scp /etc/profile hadoop2:/etc/
復制完了以后,在hadoop1和hadoop2中分別都執行source /etc/profile
在主節點hadoop0中/usr/local/hadoop/conf/下,將slaves里面的localhost刪除掉,修改為hadoop1和hadoop2這兩個從節點的主機名
vi slaves
hadoop1
hadoop2
在hadoop0中執行格式化操作:hadoop namenode -format
再在hadoop0上執行start-all.sh就可以啟動hadoop集群了
然后可以在各個節點上查看相關情況:jps
也可以通過瀏覽器查看:hadoop0:50070 (需要在Windows中的hosts修改ip和主機名的映射)
?
?
?
*可以將SecondaryNameNode改為其他的節點上,可以是一個獨立的主機,這里將其改為hadoop1上:
vi masters
將里面的localhost改為hadoop1
安全模式
在分布式文件系統啟動的時候,開始的時候會有安全模式,當分布式文件系統處于安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,
直到安全模式結 束。安全模式主要是為了系統啟動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的復制或者刪除部分數據塊。
運行期通過命令也可以進入 安全模式。在實踐過程中,系統啟動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會
兒即可。
NameNode在啟動的時候首先進入安全模式,如果datanode丟失的block達到一定的比例(1- dfs.safemode.threshold.pct),則系統會一直處于安全
模式狀態即只讀狀態。 dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS啟動的時候,如果DataNode上報的block個數達到了 元數據記錄的
block個數的0.999倍才可以離開安全模式,否則一直是這種只讀模式。如果設為1則HDFS永遠是處于SafeMode。
hadoop dfsadmin -safemode enter ---進入安全模式
hadoop dfsadmin -safemode leave ---離開安全模式
hadoop dfsadmin -safemode get ---查看安全模式狀態
hadoop dfsadmin -safemode wait
?