前面介紹的僞分布式是基于單個節點,而完全分布式是基于兩個或兩個以上節點完成Hadoop叢集搭建。
下面基于三個節點完成。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0smaNhXSU90dRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyEzM3ATM1YTM2ADNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
整個虛拟機的部署情況:
(1)HDFS的服務程序主要有三個:namenode,datanode,secondarynamenode
1)我們以第一台機器作為分布式存儲的主節點,也就是namenode所在的節點
2)然後真正存儲資料的datanode分布在三台機器中
3)secondarynamenode是namenode的一個備份放在第三台機器上
(2)關于并行計算的mapreduce程序:
1)resourcemanager是mapreduce的主節點,放在第二台機器中
2)其餘的nodemanager分布在三台機器中
3)historyserver主要用于檢視并行計算裡面的一些日志,運作狀況,放在第一台虛拟機中
由于用叢集模式的話可能有些電腦會帶不動,是以後面的課程我們還是采用僞分布式模式。
8.1 主節點部署
8.1.1 重新解壓
進入app目錄下,重新解壓一個hadoop檔案到其他檔案夾,為了與之前的hadoop僞分布式模式區分,我們給他重命名為hadoop-2.5.0并修改檔案位置
tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /usr/software/
mv hadoop-2.5.0-cdh5.3.6 ~/app/hadoop-2.5.0
我們就以hadoop-2.5.0作為叢集進行配置
8.1.2 修改配置檔案
進入hadoop-2.5.0/etc/hadoop目錄下修改一下幾個配置檔案
(1)配置hadoop-env.sh
vi hadoop-env.sh
,修改
JAVA_HOME
為之前那個參數(之前已經設定過)
(2)配置core-site.xml
vi core-site.xml
,在configuration中添加各配置項
臨時檔案目錄位址還是和以前一樣在hadoop-2.5.0中建立一個data/tmp目錄
(3)配置 hdfs-site.xml
vi hdfs-site.xml
(4)配置 mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
,将mapred-site.xml.template重命名為mapred-site.xml
vi mapred-site.xml
(5)配置 yarn-site.xml
vi yarn-site.xml
,要配置的參數有4個:
1)指定yarn叢集中的老大(就是本機)
2)配置yarn叢集中的重節點,指定map産生的中間結果傳遞給reduce采用的機制是shuffle。
3)日志聚合
4)日志删除的保留時間
(6)配置slaves
vi slaves
,把三台虛拟機的主機名寫進去
8.2 叢集節點分發與啟動
8.2.1 修改/etc/profile檔案
vi /etc/profile
因為我們現在的需求是既想保留住Hadoop僞分布式,又想搭建Hadoop叢集環境,這就導緻了一個問題,如果系統變量配置的是僞分布式的環境,每次啟動Hadoop的時候就會啟動僞分布式;如果配置的是叢集環境,每次啟動Hadoop就會啟動叢集模式。為了解決這個問題,我們把/etc/profile中Hadoop環境變量注釋掉,想起啟動Hadoop的時候直接到各自的sbin目錄下啟動即可。
source /etc/profile
,立即執行這個檔案
//同步到其他虛拟機
scp /r /etc/profile [email protected]:~/app
scp /r /etc/profile [email protected]:~/app
然後在虛拟機2和3上使用
source /etc/profile
指令使其生效
同時将hadoop-2.5.0發送到其他兩台虛拟機
scp /r ~/app/hadoop-2.5.0 [email protected]:~/app
scp /r ~/app/hadoop-2.5.0 [email protected]:~/app
可以看出在其他虛拟機中有hadoop-2.5.0
8.2.2 格式化
輸入
bin/hdfs
可以看到有格式化檔案
bin/hdfs namenode -format
,格式化
出現以上資訊則表示格式化成功
8.2.3 啟動
(1)在第一台機器上輸入
sbin/start-dfs.sh
可見datanode并沒有啟動
解決方案:
首先關閉dfs啟動程序,
sbin/stop-dfs.sh
然後在三台虛拟機中清空data和logs目錄
進入data目錄,
rm -rf *
進入logs目錄,
rm -rf *
之後在進行格式化和啟動指令即可。
在第二台機器上使用
jps
指令可以看出隻有一個
datanode
,同理第三台有一個
datanode
和
secondarynamenode
(2)在第二台機器上輸入
sbin/start-yarn.sh
然後可以看出在第二台機器上多了
NodeManager
和
ResourceManager
,第一台機器和第三台機器上多了
NodeManager
(3)在第一台機器上輸入
sbin/mr-jobhistory-daemon.sh start historyserver
然後可以看出在第一台機器上多了
JobHistoryServer
最後分别在三台虛拟機上使用
jps
指令,可見與最初的部署情況相符合,叢集環境搭建成功