Hadoop學(xué)習(xí)------Hadoop安裝方式之(三):分布式部署
這里為了方便直接將單機(jī)部署過(guò)的虛擬機(jī)直接克隆,當(dāng)然也可以不這樣做,一個(gè)個(gè)手工部署。

創(chuàng)建完整克隆——>下一步——>安裝位置。等待一段時(shí)間即可。
我這邊用了三臺(tái)虛擬機(jī),分別起名master,slave1.slave2
1、修改主機(jī)名、ip
1.1關(guān)閉防火墻
CentOS系統(tǒng)默認(rèn)開啟了防火墻,在開啟 Hadoop 集群之前,需要關(guān)閉集群中每個(gè)節(jié)點(diǎn)的防火墻。有防火墻會(huì)導(dǎo)致 ping 得通但 telnet 端口不通,從而導(dǎo)致 DataNode 啟動(dòng)了,但 Live datanodes 為 0 的情況。
在 CentOS 6.x 中,可以通過(guò)如下命令關(guān)閉防火墻:
service iptables stop # 關(guān)閉防火墻服務(wù)
chkconfig iptables off # 禁止防火墻開機(jī)自啟,就不用手動(dòng)關(guān)閉了
若用是 CentOS 7,需通過(guò)如下命令關(guān)閉(防火墻服務(wù)改成了 firewall):
systemctl stop firewalld.service # 關(guān)閉firewall
systemctl disable firewalld.service # 禁止firewall開機(jī)啟動(dòng)
1.2 修改主機(jī)名
在 CentOS 6.x 中 vi /etc/sysconfig/network
在CentOS 7或者Ubuntu 中 vi /etc/hostname

在其他兩節(jié)點(diǎn)同樣如此。分別改為slave1.slave2
1.3 修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改ip 地址 然后重啟網(wǎng)卡
service network restart 發(fā)現(xiàn)重啟失敗

這是因?yàn)榛鞠到y(tǒng)的網(wǎng)絡(luò)相關(guān)配置都是基于eth0的,如果基于此克隆虛擬機(jī)繼續(xù)克隆或復(fù)制新的虛擬機(jī),網(wǎng)卡的標(biāo)識(shí)每一次都會(huì)自動(dòng)加1變成eth1(第二次克隆會(huì)變成eth2),dmesg卻顯示內(nèi)核只識(shí)別到網(wǎng)卡eth0。
解決辦法: 打開/etc/udev/rules.d/70-persistent-net.rules 記錄下,eth1網(wǎng)卡的mac地址00:0c:29:50:bd:17
接下來(lái) vi//etc/sysconfig/network-scripts/ifcfg-eth0
將 DEVICE="eth0" 改成 DEVICE="eth1" ,
將 HWADDR="00:0c:29:8f:89:97" 改成上面的mac地址 HWADDR="00:0c:29:50:bd:17"
最后,重啟網(wǎng)絡(luò) service network restart 然后就能重啟成功
1.4 修改hosts 使所用節(jié)點(diǎn)IP映射
在每臺(tái)虛擬機(jī)上進(jìn)行如下操作。
vi /etc/hosts

修改完成后需要重啟一下 reboot
2、打通master到slave節(jié)點(diǎn)的SSH無(wú)密碼登錄
2.1設(shè)置本機(jī)無(wú)密碼登錄(各節(jié)點(diǎn)都要)
之前在單機(jī)部署時(shí)已經(jīng)設(shè)置過(guò)了,這里再說(shuō)一遍,沒有設(shè)置的可以看下
第一步:產(chǎn)生密鑰
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
第二部:導(dǎo)入authorized_keys
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
第二部導(dǎo)入的目的是為了無(wú)密碼等,這樣輸入如下命令:
ssh localhost

2.2 設(shè)置遠(yuǎn)程無(wú)密碼登錄
我這邊偷懶用的是root用戶,正規(guī)應(yīng)該用hadoop用戶
進(jìn)入slave1的.ssh目錄 cd /root/.ssh
復(fù)制公鑰文件到master
scp authorized_keys root@master:~/.ssh/authorized_keys_from_master
進(jìn)入到master的.ssh目錄 將文件導(dǎo)入到authorized_keys
cat authorized_keys_from_master >> authorized_keys
此時(shí) slave1 可以無(wú)密碼遠(yuǎn)程登錄master
同理
進(jìn)入slave2的.ssh目錄 cd /root/.ssh
復(fù)制公鑰文件到master
scp authorized_keys root@master:~/.ssh/authorized_keys_from_master
進(jìn)入到master的.ssh目錄 將文件導(dǎo)入到authorized_keys
cat authorized_keys_from_master >> authorized_keys
然后 將master 的authorized_keys文件復(fù)制到slave1和slave2中,他們之間就可以互相無(wú)密碼遠(yuǎn)程訪問(wèn)。
scp authorized_keys root@salve1:~/.ssh/authorized_keys
scp authorized_keys root@salve2:~/.ssh/authorized_keys
ssh root@slave1 不需要密碼就直接進(jìn)去了

3、修改配置文件
集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5個(gè)配置文件,更多設(shè)置項(xiàng)可點(diǎn)擊查看官方說(shuō)明,這里僅設(shè)置了正常啟動(dòng)所必須的設(shè)置項(xiàng): slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。
3.1 文件slaves
文件 slaves,將作為 DataNode 的主機(jī)名寫入該文件,每行一個(gè),默認(rèn)為 localhost,所以在偽分布式配置時(shí),節(jié)點(diǎn)即作為 NameNode 也作為 DataNode。分布式配置可以保留 localhost,也可以刪掉讓 Master 節(jié)點(diǎn)僅作為 NameNode 使用。
這里讓 Master 節(jié)點(diǎn)僅作為 NameNode 使用,因此將文件中原來(lái)的 localhost 刪除,只添加兩行內(nèi)容:slave1。slave2
cd /usr/local/hadoop/etc/hadoop/
vi slaves

3.2 core-site.xml
cd /usr/local/hadoop/etc/hadoop/
vi core-site.xml
在其中的<configuration>中添加以下內(nèi)容
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
3.3 hdfs-site.xml
dfs.replication 的值是副節(jié)點(diǎn)個(gè)數(shù),有幾個(gè)就寫幾個(gè),這邊設(shè)為2
cd /usr/local/hadoop/etc/hadoop/
vi hdfs-site.xml
其中的<configuration>中添加以下內(nèi)容
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
3.4 mapred-site.xml
cd /usr/local/hadoop/etc/hadoop/
需要將mapred-site.xml.template 文件改名或者復(fù)制一份
mv mapred-site.xml.template mapred-site.xml
或 cp mapred-site.xml.template mapred-site.xml
然后在進(jìn)行編輯 vi mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
3.5 yarn-site.xml
cd /usr/local/hadoop/etc/hadoop/
vi yarn-site.xml
在其中的<configuration>中 添加以下內(nèi)容
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3.6 啟動(dòng)并檢驗(yàn)
配置好后,按照以上步驟在各個(gè)節(jié)點(diǎn)均執(zhí)行一邊,或者將 master 上的 /usr/local/Hadoop 文件夾復(fù)制到各個(gè)節(jié)點(diǎn)上。
在master
cd /usr/local
sudo rm -r ./hadoop/tmp # 刪除 Hadoop 臨時(shí)文件
sudo rm -r ./hadoop/logs/* # 刪除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop # 先壓縮再?gòu)?fù)制
scp ./hadoop.master.tar.gz slave1:/usr/local
在slave1
tar -zxf ~/hadoop.master.tar.gz -C /usr/local
chown -R hadoop /usr/local/hadoop
在slave2上執(zhí)行同樣操作。就能將Hadoop部署好。
每個(gè)節(jié)點(diǎn)部署好后
在節(jié)點(diǎn)上執(zhí)行NameNode 的格式化
hdfs namenode –format 或者 hadoop namenode format
啟動(dòng)hdfs 在master節(jié)點(diǎn)上執(zhí)行 start-dfs.sh
啟動(dòng)yarn 在master節(jié)點(diǎn)上執(zhí)行 start-yarn.sh
啟動(dòng)job history server 在master節(jié)點(diǎn)上執(zhí)行 mr-jobhostory-daemon.sh start historyserver
通過(guò)命令 jps 可以查看各個(gè)節(jié)點(diǎn)所啟動(dòng)的進(jìn)程。正確的話,在 Master 節(jié)點(diǎn)上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 進(jìn)程

在 Slave 節(jié)點(diǎn)可以看到 DataNode 和 NodeManager 進(jìn)程

缺少任一進(jìn)程都表示出錯(cuò)。另外還需要在 Master 節(jié)點(diǎn)上通過(guò)命令 hdfs dfsadmin -report 查看 DataNode 是否正常啟動(dòng),如果 Live datanodes 不為 0 ,則說(shuō)明集群?jiǎn)?dòng)成功。
同樣我們可以通過(guò) Web 頁(yè)面看到查看 DataNode 和 NameNode 的狀態(tài):http://master:50070/。如果不成功,可以通過(guò)啟動(dòng)日志排查原因。
3.7執(zhí)行分布式實(shí)例
創(chuàng)建 HDFS 上的用戶目錄
hdfs dfs -mkdir -p /user/hadoop
將 /usr/local/hadoop/etc/hadoop 中的配置文件作為輸入文件復(fù)制到分布式文件系統(tǒng)中
hdfs dfs -mkdir input
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
通過(guò)查看 DataNode 的狀態(tài)(占用大小有改變),輸入文件確實(shí)復(fù)制到了 DataNode 中

接著就可以運(yùn)行 MapReduce 作業(yè)了
hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
運(yùn)行時(shí)的輸出信息與偽分布式類似,會(huì)顯示 Job 的進(jìn)度。
可能會(huì)有點(diǎn)慢,但如果遲遲沒有進(jìn)度,比如 5 分鐘都沒看到進(jìn)度,那不妨重啟 Hadoop 再試試。若重啟還不行,則很有可能是內(nèi)存不足引起,建議增大虛擬機(jī)的內(nèi)存,或者通過(guò)更改 YARN 的內(nèi)存配置解決。
同樣可以通過(guò) Web 界面查看任務(wù)進(jìn)度 http://master:8088/cluster,在 Web 界面點(diǎn)擊 “Tracking UI” 這一列的 History 連接,可以看到任務(wù)的運(yùn)行信息
4 、關(guān)閉Hadoop集群
同樣關(guān)閉Hadoop集群也是在Master節(jié)點(diǎn)上執(zhí)行的
stop-yarn.sh
stop-dfs.sh
mr-jobhistory-daemon.sh stop historyserver
posted on 2017-09-07 17:58 風(fēng)行__雄關(guān)漫道 閱讀(370) 評(píng)論(0) 收藏 舉報(bào)
浙公網(wǎng)安備 33010602011771號(hào)