前言
上一篇介紹了偽分布式集群的搭建,其實在我們的生產環境中我們肯定不是使用只有一台服務器的偽分布式集群當中的。接下來我將給大家分享一下全分布式集群的搭建!
其實搭建最基本的全分布式集群和偽分布式集群基本沒有什么區別,只有很小的區別。
一、搭建Hadoop全分布式集群前提
1.1、網絡
1)如果是在一台虛擬機中安裝多個linux操作系統的話,可以使用NAT或橋接模式都是可以的。試一試可不可以相互ping通!
2)如果在一個局域網當中,自己的多台電腦(每台電腦安裝相同版本的linux系統)搭建,將所要使用的Ubuntu操作系統的網絡模式調整為橋接模式。
步驟:
一是:在要使用的虛擬機的標簽上右鍵單擊,選擇設置,選擇網絡適配器,選擇橋接模式,確定
二是:設置完成之后,重啟一下虛擬機
三是:再設置橋接之前將固定的IP取消
桌面版:通過圖形化界面設置的。
服務器版:在/etc/network/interfaces
iface ens33 inet dhcp
#address ...
四是:ifconfig獲取IP。172.16.21.xxx
最后試一試能不能ping通
1.2、安裝jdk
每一個要搭建集群的服務器都需要安裝jdk,這里就不介紹了,可以查看上一篇
1.3、安裝hadoop
每一個要搭建集群的服務器都需要安裝hadoop,這里就不介紹了,可以查看上一篇。
二、Hadoop全分布式集群搭建的配置
配置/opt/hadoop/etc/hadoop相關文件
2.1、hadoop-env.sh
25行左右:export JAVA_HOME=${JAVA_HOME}
改成:export JAVA_HOME=/opt/jdk
2.2、core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://mip:9000</value> </property> </configuration>
分析:
mip:在主節點的mip就是自己的ip,而所有從節點的mip是主節點的ip。
9000:主節點和從節點配置的端口都是9000
2.3、hdfs-site.xml
注意:**:下面配置了幾個目錄。需要將/data目錄使用-R給權限為777。
<configuration> <property> <name>dfs.nameservices</name> <value>hadoop-cluster</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:///data/hadoop/hdfs/nn</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:///data/hadoop/hdfs/snn</value> </property> <property> <name>dfs.namenode.checkpoint.edits.dir</name> <value>file:///data/hadoop/hdfs/snn</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///data/hadoop/hdfs/dn</value> </property> </configuration>
分析:
dfs.nameservices:在一個全分布式集群大眾集群當中這個的value要相同
dfs.replication:因為hadoop是具有可靠性的,它會備份多個文本,這里value就是指備份的數量(小於等於從節點的數量)
一個問題:
dfs.datanode.data.dir:這里我在配置的時候遇到一個問題,就是當使用的這個的時候從節點起不來。當改成fs.datanode.data.dir就有用了。
但是官方給出的文檔確實就是這個呀!所以很邪乎。因為只有2.0版本之前是fs
2.4.mapred-site.xml
注意:如果在剛解壓之后,是沒有這個文件的,需要將mapred-site.xml.template復制為mapred-site.xml。
<configuration> <property>
<!-指定Mapreduce運行在yarn上--> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
2.5、yarn-site.xml
<configuration> <!-- 指定ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>mip</value> </property> <!-- 指定reducer獲取數據的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>file:///data/hadoop/yarn/nm</value> </property>
分析:
mip:在主節點的mip就是自己的ip,而所有從節點的mip是主節點的ip。
2.6、創建上面配置的目錄
sudo mkdir -p /data/hadoop/hdfs/nn sudo mkdir -p /data/hadoop/hdfs/dn sudo mkdir -p /data/hadoop/hdfs/snn sudo mkdir -p /data/hadoop/yarn/nm
一定要設置成:sudo chmod -R 777 /data
三、全分布式集群搭建測試
3.1、運行環境
有三台ubuntu服務器(ubuntu 17.04):
主機名:udzyh1 IP:1.0.0.5 作為主節點(名字節點)
主機名:server1 IP:1.0.0.3 作為從節點(數據節點)
主機名:udzyh2 IP:1.0.0.7 作為從節點(數據節點)
jdk1.8.0_131
hadoop 2.8.1
3.2、服務器集群的啟動與關閉
名字節點、資源管理器:這是在主節點中啟動或關閉的。
數據節點、節點管理器:這是在從節點中啟動或關閉的。
MR作業日志管理器:這是在主節點中啟動或關閉的。
3.3、效果
在主節點:udzyh1中
在從節點:server1中
在從節點:udzyh2中
我們在主節點的web控制頁面中:http:1.0.0.5:50070中查看到兩個從節點
說明配置成功
3.4、監控平台
四、Hadoop全分布式集群配置免密登錄實現主節點控制從節點
配置這個是為了實現主節點管理(開啟和關閉)從節點的功能:
我們只需要在主節點中使用start-dfs.sh/stop-dfs.sh就能開啟或關閉namenode和所有的datanode,使用start-yarn.sh/stop-yarn.sh就能開啟或關閉resourcemanager和所有的nodemanager。
4.1、配置主從節點之間的免密登錄
1)在所有的主從節點中執行

3)在所有的從節點中執行

在從節點1.0.0.7
4)測試
我們可以查看他們是用戶名相同的,所以可以直接使用ssh 1.0.0.3遠程連接
4.2、實現主節點控制從節點
1)在主節點中
打開vi /opt/hadoop/etc/hadoop/slaves

4.3、測試實現主節點控制從節點
1)在主節點的服務器中執行start-dfs.sh
2)在web監控平台查詢
3)在主節點的服務器中執行stop-dfs.sh
3)在主節點的服務器中執行start-yarn.sh
4)在web監控平台查詢到
5)在主節點的服務器中執行stop-yarn.sh
五、配置集群中遇到的問題
2)主節點和從節點啟動了,但是在主節點的web控制頁面查找不到從節點(linux系統安裝在不同的物理機上面)
解決方案:


它不能建立IPv6的連接,所以刪除了IPv6之后系統會使用IPv4(在主節點上添加從節點的標識的)
4)在主節點的web控制頁面查詢不到從節點信息(但是使用jps可以查詢到)
喜歡就點個“推薦”哦!