Hadoop(三)手把手教你搭建Hadoop全分佈式集羣

前言node

  上一篇介紹了僞分佈式集羣的搭建,其實在咱們的生產環境中咱們確定不是使用只有一臺服務器的僞分佈式集羣當中的。接下來我將給你們分享一下全分佈式集羣的搭建!linux

  其實搭建最基本的全分佈式集羣和僞分佈式集羣基本沒有什麼區別,只有很小的區別。web

1、搭建Hadoop全分佈式集羣前提

1.一、網絡

  1)若是是在一臺虛擬機中安裝多個linux操做系統的話,可使用NAT或橋接模式都是能夠的。試一試可不能夠相互ping通!ubuntu

  2)若是在一個局域網當中,本身的多臺電腦(每臺電腦安裝相同版本的linux系統)搭建,將所要使用的Ubuntu操做系統的網絡模式調整爲橋接模式。服務器

    步驟:網絡

      一是:在要使用的虛擬機的標籤上右鍵單擊,選擇設置,選擇網絡適配器,選擇橋接模式,肯定ssh

      二是:設置完成以後,重啓一下虛擬機 分佈式

      三是:再設置橋接以前將固定的IP取消   oop

        桌面版:經過圖形化界面設置的。
        服務器版:在/etc/network/interfaces
            iface ens33 inet dhcp
            #address ...測試

      四是:ifconfig獲取IP。172.16.21.xxx   

      最後試一試能不能ping通

1.二、安裝jdk

  每個要搭建集羣的服務器都須要安裝jdk,這裏就不介紹了,能夠查看上一篇

1.三、安裝hadoop

  每個要搭建集羣的服務器都須要安裝hadoop,這裏就不介紹了,能夠查看上一篇。

2、Hadoop全分佈式集羣搭建的配置

配置/opt/hadoop/etc/hadoop相關文件

2.一、hadoop-env.sh  

  25行左右:export JAVA_HOME=${JAVA_HOME}
  改爲:export JAVA_HOME=/opt/jdk

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.三、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.五、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.六、建立上面配置的目錄

    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、全分佈式集羣搭建測試

3.一、運行環境

  有三臺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.二、服務器集羣的啓動與關閉

  

  名字節點、資源管理器:這是在主節點中啓動或關閉的。

  數據節點、節點管理器:這是在從節點中啓動或關閉的。

  MR做業日誌管理器:這是在主節點中啓動或關閉的。

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)在全部的主從節點中執行

    若是之前配置過免密登陸的話,建議刪除從新創建過,由於咱們須要配置的是多臺服務器:
      rm -r  ~/.ssh
     執行ssh-keygen爲了在主節點中生成公鑰和私鑰,在從從節點生成.ssh目錄
  2)在主節點中執行 
    scp  ~/.ssh/id_rsa.pub   從節點的用戶名@從節點ip:~
    注意:第一次遠程鏈接的話,首先輸入yes,而後是從節點密碼
    

  3)在全部的從節點中執行

    咱們把主節點的公鑰已經拿到了全部的從節點中,接下來就是:
      cat id_rsa.pub>>.ssh/authorized_keys當中
    在從節點:1.0.0.3
    

    在從節點1.0.0.7

    

  4)測試

    

    咱們能夠查看他們是用戶名相同的,因此能夠直接使用ssh 1.0.0.3遠程鏈接

    

4.二、實現主節點控制從節點

  1)在主節點中

    打開vi  /opt/hadoop/etc/hadoop/slaves

     

    把它刪掉,而後配置上全部從節點的主機名
    注意:這樣配置的前提是 主節點要能免密登陸到從節點中
    當 你去執行start-dfs.sh時,它會去slaves文件中去找從節點(這就是配置免密登陸的緣由)
    而後去啓動從節點。同時 本身也須要作免密登陸也就是說要本身對本身作免密登陸.
  2)在主節點中
        cat .ssh/id_rsa.pub >> .ssh/authorized_keys 
  3)  測試
    ssh  127.0.0.1
      
  注意:在主節點 執行start-dfs.sh中主節點的用戶名必須和全部從節點的用戶名相同。由於那個服務器執 行這個腳本
      就以這個用戶名去遠程登陸到其餘從節點的服務器中,因此在全部的生產環境中控制同一類集羣的用戶必定要相同。

4.三、測試實現主節點控制從節點

  1)在主節點的服務器中執行start-dfs.sh

    

  2)在web監控平臺查詢

    

  3)在主節點的服務器中執行stop-dfs.sh

    

  3)在主節點的服務器中執行start-yarn.sh

    

  4)在web監控平臺查詢到

    

  5)在主節點的服務器中執行stop-yarn.sh

    

5、配置集羣中遇到的問題

  2)主節點和從節點啓動了,可是在主節點的web控制頁面查找不到從節點(linux系統安裝在不一樣的物理機上面)

    

  解決方案:   

   在服務器添加完公鑰以後,ssh服務器而後報了這個錯誤
          sign_and_send_pubkey: signing failed: agent refused operation
        而後執行了如下命令纔好。。
          eval "$(ssh-agent -s)"  注意:-s前面有空格
           ssh-add
  3)
    
    在全部主節點和從節點的服務器中的/etc/hosts中:   刪除全部關於ipv6的配置
    

    它不能創建IPv6的鏈接,因此刪除了IPv6以後系統會使用IPv4(在主節點上添加從節點的標識的)

  4)在主節點的web控制頁面查詢不到從節點信息(可是使用jps能夠查詢到)

      我說過須要在etc/hosts文件中加入全部集羣服務器的ip和主機名
      可是今天今天我測試的時候出現問題,而後我就把 主從節點的在hosts文件配置的各個節點的ip+主機的配置刪除了
    
   我估計這是由於我是在一臺虛擬機中安裝了多臺的ubuntu中進行搭建集羣的緣由。
 

喜歡就點個「推薦」哦! 

相關文章
相關標籤/搜索