分布式集群配置簡(jiǎn)單指南 Special Edition @2017.12.06
0. 準(zhǔn)備工作
0.1 三臺(tái)已經(jīng)【配置好的】【可以運(yùn)行】Hadoop偽分布式實(shí)例的虛擬機(jī)
0.2 將三臺(tái)虛擬機(jī)連入同一個(gè)局域網(wǎng)
(可以用三臺(tái)電腦分別開一個(gè)虛擬機(jī),橋接無線網(wǎng)卡然后連手機(jī)熱點(diǎn)唾那,手機(jī)不用聯(lián)網(wǎng)访锻,只是提供一個(gè)局域網(wǎng),建議安卓闹获,蘋果聯(lián)網(wǎng)才能開熱點(diǎn)期犬;也可以在同一臺(tái)電腦上復(fù)制兩臺(tái)虛擬機(jī)隨便橋接一張網(wǎng)卡,如果橋接網(wǎng)卡無法開機(jī)可以使用僅主機(jī)(Host-Only)網(wǎng)絡(luò)避诽,不過要自己配置好VirtualBox的DHCP服務(wù)器【管理->全局設(shè)定->網(wǎng)絡(luò)->僅主機(jī)(Host-Only)網(wǎng)絡(luò)】龟虎。)
0.3 確保三臺(tái)機(jī)器互相能ping通,并記錄三臺(tái)機(jī)器的IP
一般來說應(yīng)該是【192.168.x.a/192.168.x.b/192.168.x.c】
0.4 確保三臺(tái)機(jī)器都已經(jīng)切到了hadoop用戶
1. 分別修改主機(jī)名
sudo vi /etc/hostname
三臺(tái)機(jī)器都要改
將君の名は-VirtualBox
分別改為node1
/node2
/node3
改完sudo reboot
重啟
2. 綁定主機(jī)名IP地址
sudo vi /etc/hosts
三臺(tái)機(jī)器都要加入以下內(nèi)容
192.168.x.a node1
192.168.x.b node2
192.168.x.c node3
IP地址和名字中間是Tab沙庐,所以能對(duì)齊
對(duì)不對(duì)齊都無所謂的話鲤妥,空格應(yīng)該也可以 大概吧
3. 修改Hadoop的配置文件
大寫佳吞!加粗!重要:【有且只有】node1一臺(tái)機(jī)器需要配置此項(xiàng)(3. 修改Hadoop的配置文件)
先進(jìn)入放配置文件那個(gè)文件夾
cd /usr/local/hadoop/etc/hadoop/
3.1 修改core-site.xml
gedit core-site.xml
不用gedit用vim也可以棉安,總之能修改就行
在configuration標(biāo)簽里加入property項(xiàng)
如下
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:9000</value>
</property>
……
后略
……
</configuration>
此處配置的是NameNode信息底扳,即指定NameNode所在機(jī)器以及端口
3.2 修改hdfs-site.xml
gedit hdfs-site.xml
在configuration標(biāo)簽中修改property內(nèi)容(不配置的時(shí)候默認(rèn)是3):
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
……
后略
……
</configuration>
3.3 修改數(shù)據(jù)節(jié)點(diǎn)和第二名稱節(jié)點(diǎn)
3.3.1 編輯DataNode
vi slaves
刪除localhost并添加以下節(jié)點(diǎn)配置:
node2
node3
3.3.2 同理編輯SecondaryNameNode
vi masters
刪除localhost并添加以下節(jié)點(diǎn)配置:
node2
本來這個(gè)時(shí)候該配置環(huán)境變量JAVA_HOME了,不過只要之前已經(jīng)成功運(yùn)行過偽分布式肯定已經(jīng)配置好了贡耽。
可以用echo $JAVA_HOME
確認(rèn)配置是否正確衷模,如果正確會(huì)回顯JAVA安裝目錄。
4. 設(shè)置本地shh免密登錄
三臺(tái)機(jī)器都要執(zhí)行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
4.1 node1的單獨(dú)配置
cd ~/.ssh/
scp id_dsa.pub hadoop@node2:~
<輸入node2的密碼>
scp id_dsa.pub hadoop@node3:~
<輸入node3的密碼>
4.2 node2/node3的分別配置
cd ~
cat id_dsa.pub >> ~/.ssh/authorized_keys
配置完后可以在node1上使用【ssh 主機(jī)名】指令嘗試遠(yuǎn)程登錄
比如ssh node2
菇爪,如果執(zhí)行完跳到hadoop@node2:~$
說明免密登錄配置成功算芯,node1可以對(duì)node2/node3為所欲為了
5. 將hdfs配置復(fù)制給node2和node3
只有node1執(zhí)行以下步驟
cd /usr/local/hadoop/etc/hadoop
scp ./* hadoop@node2:/usr/local/hadoop/etc/hadoop
scp ./* hadoop@node3:/usr/local/hadoop/etc/hadoop
6. 格式化名稱節(jié)點(diǎn)并啟動(dòng)HDFS
只有node1執(zhí)行以下步驟
cd /usr/local/hadoop/
./bin/hdfs namenode -format
./sbin/start-dfs.sh
7. 測(cè)試效果
分別在三臺(tái)機(jī)器上執(zhí)行jps
按照《分布式集群手冊(cè).txt》的內(nèi)容
node1應(yīng)該是Jps/NameNode
node2應(yīng)該是Jps/SecondaryNameNode/DataNode
node3應(yīng)該是Jps/DataNode
但是我們實(shí)際運(yùn)行的時(shí)候是
node1是Jps/NameNode/SecondaryNameNode
node2是Jps/DataNode
node3是Jps/DataNode
這樣名稱節(jié)點(diǎn)和第二名稱節(jié)點(diǎn)在同一臺(tái)機(jī)器上,第二名稱節(jié)點(diǎn)就失去意義了
推測(cè)是3.3.2的時(shí)候改完忘了保存導(dǎo)致這種情況凳宙,不過分布式集群還是在正常運(yùn)作的
Ubuntu有圖形界面熙揍,直接打開火狐訪問http://node1:50070
即可
如果是CentOS,需要用本地桌面瀏覽器才能查看效果
打開本地的host文件C:\Windows\System32\drivers\etc\hosts
在最下面加
192.168.43.a node1
192.168.43.b node2
192.168.43.c node3
然后就可以用本地瀏覽器訪問http://node1:50070/dfshealth.jsp
了
8. 運(yùn)行實(shí)例
很遺憾我們的node1中途掛了沒有做完這步氏涩,這里列出步驟
a) 創(chuàng)建用戶目錄
./bin/hdfs dfs -mkdir -p /user/hadoop
b) 使用絕對(duì)路徑將core-site.xml這個(gè)文件復(fù)制到分布式文件系統(tǒng)中
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/core-site.xml input
c) 查看HDFS中的文件列表
./bin/hdfs dfs -ls input
d) 將core-site.xml文件作為輸入届囚,篩選當(dāng)中符合【正則表達(dá)式dfs[a-z.]+】的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù),最后輸出結(jié)果到output文件夾中
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
e) 查看運(yùn)行結(jié)果
./bin/hdfs dfs -cat output/*
f) 如果輸出目錄已存在是尖,會(huì)提示錯(cuò)誤org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://localhost:9000/user/hadoop/output already exists
請(qǐng)刪除輸出目錄./bin/hdfs dfs -rm -r output
9. 善始善終
關(guān)閉hadoop
./sbin/stop-dfs.sh
注意關(guān)掉虛擬機(jī)之后再打開不需要再重新初始化NameNode意系,直接./sbin/start-dfs.sh
啟動(dòng)hadoop就好了
10. 其他
P.S. 如果節(jié)點(diǎn)配置出錯(cuò)(就是jps顯示結(jié)果不對(duì))
./sbin/stop-dfs.sh
rm -r ./tmp
./bin/hdfs namenode -format
./sbin/start-dfs.sh
重啟四連,嘗試修復(fù)
Special Thank For Mr.Mi
本文檔采用《CC0協(xié)議》放棄所有權(quán)利允許任何形式的轉(zhuǎn)載修改及使用