Hadoop(三)手把手教你搭建Hadoop全分布式集群


前言

  上一篇介紹了偽分布式集群的搭建,其實在我們的生產環境中我們肯定不是使用只有一台服務器的偽分布式集群當中的。接下來我將給大家分享一下全分布式集群的搭建!

  其實搭建最基本的全分布式集群和偽分布式集群基本沒有什么區別,只有很小的區別。

一、搭建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)在所有的主從節點中執行

    如果以前配置過免密登錄的話,建議刪除重新建立過,因為我們需要配置的是多台服務器:
      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.2、實現主節點控制從節點

  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.3、測試實現主節點控制從節點

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

    

  2)在web監控平台查詢

    

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

    

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

    

  4)在web監控平台查詢到

    

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

    

五、配置集群中遇到的問題

  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中進行搭建集群的原因。
 

喜歡就點個“推薦”哦! 

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM