1. 程式人生 > 其它 >Hadoop完全分佈模式的搭建

Hadoop完全分佈模式的搭建

Hadoop完全分佈模式的搭建

目錄

1.安裝前準備

在VMware安裝3臺Ubuntu16.04的虛擬機器並且都安裝jdk。採用ifconfig命令檢視IP地址,
我的IP地址依次是:
192.168.17.135
192.168.17.136
192.168.17.137
IP地址建議設定成固定IP地址

2.修改主機名

(1)修改第一臺主機名稱為node1。

sudo vi /etc/hostname

將原有內容刪除,新增如下內容。

node1

重啟使之生效。

sudo reboot

(2)修改第二臺主機名稱為node2。

sudo vi /etc/hostname

將原有內容刪除,新增如下內容。

node2

重啟使之生效。

sudo reboot

(3)修改第三臺主機名稱為node3。

sudo vi /etc/hostname

將原有內容刪除,新增如下內容。

node3

重啟使之生效。

sudo reboot

3.對映IP地址及主機名

對3臺虛擬機器,依次修改/etc/hosts檔案。

sudo vi /etc/hosts

在檔案末尾新增如下內容。注意:IP地址要根據實際情況填寫。

192.168.17.135 node1
192.168.17.136 node2
192.168.17.137 node3

4.免密登入設定

在完全分散式模式下,叢集內任意一臺主機可免密登入叢集內所有主機,即實現了兩 兩免密登入。免密登入的設定方法和偽分佈模式的免密登入設定方法一樣,分別在 nodel.node2.node3主機上生成公鑰/私鑰金鑰對,然後將公鑰傳送給叢集內的所有主機。 下面以node1免密登入叢集內其他所有主機為例進行講解。在完成nodel主機免密登入 叢集內其他主機後,其他兩臺主機可仿照node1的步驟完成免密碼登入設定。
(1)在nodel主機生成金鑰對。

ssh-keygen -t rsa

其中,rsa表示加密演算法,鍵人上面一條命令後連續敲擊三次回車鍵,系統會自動在~/. ssh目錄下生成公鑰(id_rsa.pub)和私鑰(id_rsa),可通過命令$ls~/ssh檢視。

ls ~/.ssh
id_rsa  id_rsa.pub

(2)將node1公鑰id_rsa.pub複製到node1、node2和node3主機上。

$ ssh-copy-id-i  ~/.ssh/idrsa.pub nodel
$ ssh-copy-id -i  ~/.ssh/id rsa.pub node2
$ ssh-copy-id-i  ~/.ssh/id rsa.pub node3

(3)驗證免密登入:在nodel主機輸人一下命令驗證,注意主機名稱的變化。

$ ssh node1
$ ssh node2
$ ssh node3

5.安裝NTP服務

完全分散式模式由名臺主機組成,各個主機的時間可能存在較大差異。如果時間 異較大,執行MapReduce程式的時候會存在問題。NTP服務通過獲取網路時間使叢集內不同主機的時間保持一致。預設安裝Ubuntu作業系統時,不會安裝NTP服務。

在3臺主機分別安裝NTP服務,命令如下(在安裝NTP服務時需連線網際網路):

 $ sudo apt-get install ntp

檢視時間服務是否執行,如果輸出有“ntp"字樣,說明NTP正在執行。

$ sudo dpkg -1 | grepntp

6.安裝Hadoop

下載hadoop2.7.3的安裝包
下載地址:http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/

解壓安裝包

將下載的hadoop-2.7.3.tar.gz檔案通過Xftp等工具上依次傳到3臺Ubuntu的~/soft目錄下中。
注意:
Xftp需要先安裝,安裝方法自行百度,上傳成功後ls命令檢視有hadoop-2.7.3.tar.gz


 cd ~/soft   #注意:soft目錄如果不存在,需要先用mkdir ~/soft命令建立
 ls
hadoop-2.7.3.tar.gz

解壓安裝包

$ tar -zxvf hadoop-2.7.3.tar.gz

解壓後ls檢視發現多了一個目錄hadoop2.7.3

$ ls
hadoop-2.7.3.tar.gz  hadoop-2.7.3

建立軟連結,方便使用

ln -s hadoop-2.7.3 hadoop

配置Linux環境變數

$ nano ~/.bashrc

在檔案末尾新增

export HADOOP_HOME=~/soft/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

讓環境變數立即生效

$ source ~/.bashrc

另外兩臺Ubuntu主機node1、node2也按如上安裝。

7.設定Hadoop配置檔案

在node1主機進行操作。進人node1主機的Hadoop配置檔案目錄${HADOOP HOME}/ etc/hadoop。

$ cd~/hadoop/etc/hadoop

(1)設定hadoop-env.sh

vi hadoop-env.sh

找到含有export JAVA_HOME=${JAVA_HOME}一行,將等號後面的內容刪除,換成JAVA_HOME的絕對路徑,

export JAVA_HOME=自己jdk的絕對路徑

(2)設定core-site.xml.

$ vi core-site.xml

在<configuration與</configuration之間新增配置內容
新增的配置如下:

	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://node1:8020</value>
        <!-- 以上主機名node1要按實際情況修改 -->
	</property>
	<property>
		<name>hadoop.tmp.dir</name>
 		<value>/home/jsy/soft/hadoop/tmp</value>
 		   <!-- 以上jsy為使用者名稱要修改成自己的 -->
 	</property>

(3)設定hdfs-site.xml。

$ vi hdfs-site.xml

同樣在<configuration與</configuration之間新增配置內容,配置內容如下:


  <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>

(4)配置mapred-site.xml

原來沒有mapred-site.xml檔案,由mapred-site.xml.template複製出mapred-site.xml

$ cp mapred-site.xml.template mapred-site.xml

配置 mapred-site.xml

vi mapred-site.xml

同樣在<configuration與</configuration之間新增配置內容,配置內容如下:

	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

(5) 配置yarn-site.xml

vi yarn-site.xml

同樣在<configuration與</configuration之間新增配置內容,配置內容如下:

   <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

注意:node1為主機名,注意按實際修改。
(6) 配置slaves

vi slaves

將原有內容刪除,新增以下內容。

node2
node3

(7)分發配置。
將node1的配置檔案分發至node2和node3主機。

$ cd~/hadoop/etc/
$ scp-r hadoop jsy@ node2:~ /hadoop/etc/ 
$ scp-r hadoop jsy@ node3:~ /hadoop/etc/ 

8.格式化HDFS

在nodel主機操作,命令如下:

$ hdfs namenode -format

9.啟動Hadoop

啟動命令只需在node1主機操作。
採用下面命令分別啟動HDFS和YARN。

$ start-dfs.sh
$ start-yarn.sh

或者用以下命令啟動HDFS和YARN。

$ start-all.sh

10.驗證Hadoop程序

用jps命令分別在所有主機驗證。

$ jps

nodel主機包含以下3個程序表示啟動Hadoop成功。

$ jps
SecondaryNameNode
NameNode
ResourceManager

在node2和node3主機分別執行jps命令,均包含以下兩個程序表示啟動Hadoop成功。

$ jps
NodeManager
DataNode

如果某個主機少了某個程序,應該到對應主機去找相關的log檢視原因,log存放 在$ {HADOOP_HOME}/logs目錄下。例如,node3主機少了DataNode程序,則應該進 人node3主機的${HADOOP_HOME}/logs目錄下,檢視DataNode相關的log,找到含有 “WARN” Error”"Exception”等的關鍵字句,通過上網搜尋關鍵字句找到解決問題的 辦法。

$ ssh node3
$ cd~ /hadoop-2.7.3/logs
$ cathadoop-hadoop-datanode-node3.log

也可以通過vi命令檢視。

$ vi hadoop-hadoop-datanode-nodel.log

最新出現的錯誤,其資訊都在檔案末尾。

11.通過Web訪問Hadoop

(I) HDFS Web介面。
在Windows的測覽器中,輸人網址:http://192.168.17.136:50070,可以檢視NameNode和 DetaNode資訊,如圖所示。其中,192.168.30.136表示Master的IP地址,請根據實際 情況修改。

單擊Web頁面的Datanodes檢視DataNode資訊,如圖2-32所示,有兩個DataNode 正 在執行。

在 Windows測覽器中,輸人網址tp://192.168.30.136:5090,可以檢視Secondar NameNode資訊。

(2) YARN Web介面。
在Windows的瀏覽器中,輸人網址tp://9161.30.136:8088可以檢視叢集所有應用 程式的資訊,如圖2-34所示,可以看到Active Nodes為2,說明叢集有兩個NodeManage 節點正在執行。

至此,Hadoop完全分佈模式(叢集模式)搭建完成。

Java