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