1. 程式人生 > >Hadoop(二)搭建偽分布式集群

Hadoop(二)搭建偽分布式集群

tro check -- conf XML 可能 ado dem daemon

前言

  前面只是大概介紹了一下Hadoop,現在就開始搭建集群了。我們下嘗試一下搭建一個最簡單的集群。之後為什麽要這樣搭建會慢慢的分享,先要看一下效果吧!

一、Hadoop的三種運行模式(啟動模式)

1.1、單機模式(獨立模式)(Local或Standalone Mode)

  -默認情況下,Hadoop即處於該模式,用於開發和調式。

  -不對配置文件進行修改。
  -使用本地文件系統,而不是分布式文件系統
  -Hadoop不會啟動NameNode、DataNode、JobTracker、TaskTracker等守護進程,Map()和Reduce()任務作為同一個進程的不同部分來執行的


  -用於對MapReduce程序的邏輯進行調試,確保程序的正確

1.2、偽分布式模式(Pseudo-Distrubuted Mode)

  -Hadoop的守護進程運行在本機機器,模擬一個小規模的集群 

  -在一臺主機模擬多主機
  -Hadoop啟動NameNode、DataNode、JobTracker、TaskTracker這些守護進程都在同一臺機器上運行,是相互獨立的Java進程
  -在這種模式下,Hadoop使用的是分布式文件系統,各個作業也是由JobTraker服務,來管理的獨立進程。在單機模式之上增加了代碼調試功能,允許檢查內存使用情況,HDFS輸入輸出,

    以及其他的守護進程交互。類似於完全分布式模式,因此,這種模式常用來開發測試Hadoop程序的執行是否正確。

  -修改3個配置文件:core-site.xml(Hadoop集群的特性,作用於全部進程及客戶端)、hdfs-site.xml(配置HDFS集群的工作屬性)、mapred-site.xml(配置MapReduce集群的屬性)
  -格式化文件系統

1.3、全分布式集群模式(Full-Distributed Mode)

  -Hadoop的守護進程運行在一個集群上 

  -Hadoop的守護進程運行在由多臺主機搭建的集群上,是真正的生產環境
  -在所有的主機上安裝JDK和Hadoop,組成相互連通的網絡
  -在主機間設置SSH免密碼登錄,把各從節點生成的公鑰添加到主節點的信任列表
  -修改3個配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,設置文件的副本等參數

  -格式化文件系統

二、搭建偽分布式集群的前提條件

環境:在ubuntu17.04

    jdk1.8.0_131

    hadoop 2.8.1

2.1、能夠正常運行的Ubuntu操作系統

  在Ubuntu下,軟件安裝到/opt下,當前正在使用的用戶,對於opt目錄需要有讀寫權限: 

  1)將opt的權限給為777(漏洞文件),不推薦在生產環境中使用。但是可以在學習和調試環境中使用。     

  2)sudo

    在啟動Hadoop的各個守護進程的時候,需要使用sudo。
    在管理Hadoop的時候,實際上由不同的用戶啟動不同集群的守護進程。
    統一使用當前的用戶管理所有集群。

  3)該目錄的所有者設置為當前用戶

2.2、安裝JDK,並配置環境變量

  1)將jdk安裝包放在家目錄下

  2)解壓到opt目錄下

    sudo tar zxvf jdk-8u131-linux-x64.tar.gz -C /opt

    此時在/opt目錄下:會有一個jdk1.8.0_131

  3)創建軟鏈接

    sudo ln -snf /opt/jdk1.8.0_131 /opt/jdk

    技術分享

    註意:創建軟連接的目的是為了,我們在做項目的時候,可能會用到不同的jdk版本,這是要換軟件的話,只需要修改軟鏈接就可以了。而不用修改配置文件。

  4)配置環境變量   

    局部環境變量:~/.bashrc
    全局環境變量:/etc/profile
    export JAVA_HOME=/opt/jdk
    export JRE_HOME=$JAVA_HOME/jre
    export CLASSPATH=.:$JAVA_HOME/lib
    export PATH=$PATH:$JAVA_HOME/bin

    source 相關文件(更新配置文件)

  5)查看是否安裝成功

   java、javac、java -version

三、搭建偽分布式集群

3.1、安裝hadoop

  1)解壓hadoop安裝包到opt目錄下

    sudo tar zxvf hadoop-2.8.1.tar.gz -C /opt

  2)創建軟鏈接

    ln -snf /opt/hadoop-2.8.1 /opt/hadoop  

    技術分享

  3)配置環境變量  

    在/etc/profile文件中加入以下內容:
    export HADOOP_HOME=/opt/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    source /etc/profile

  4)使用hadoop version命令測試是否配置成功

    技術分享

3.2、配置hadoop

  配置文件存放在/opt/hadoop/etc/hadoop中有n多個文件,暫時我們只需要修改的只有5個

  1)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://1.0.0.5:9000</value>   
                </property>
            </configuration>

    技術分享

  分析:1.0.0.5是你主節點所在主機的ip,而9000為端口

  3)hdfs-site.xml   

            <configuration>
                <property>
                    <name>dfs.nameservices</name>
                    <value>hadoop-cluster</value>
                </property>
                <property>
                    <name>dfs.namenode.name.dir</name>
                    <value>file:///data/hadoop/hdfs/nn</value>
                </property>
                <property>
                    <name>dfs.namenode.ch
                    eckpoint.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>

    技術分享

  4)mapred-site.xml

    在hadoop的相關目錄中沒有此文件,但是有一個mapred-site.xml.template文件,將該文件復制一份為mapred-site.xml

    cp mapred-site.xml.template mapred-site.xml
            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

    技術分享

  5)yarn-site.xml

            <configuration>
                <!-- 指定ResourceManager的地址-->
                <property>
                    <name>yarn.resourcemanager.hostname</name>
                    <value>1.0.0.5</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>
            </configuration>

    技術分享

  7)創建相關目錄

        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啟動hadoop的相關進程,這幾目錄的權限可以不用管
    如果是使用當前的用戶啟動相關進程,對於opt目錄,當前用戶得有讀寫權限,對於/data目錄也需要讀寫權限

   遇到問題:

      筆者就是在這個目錄權限的問題吃el很大得虧。首先為了不使用sudo我將/data目錄的權限修改為777,然後進行

      HDFS集群格式化的時候,出現:

        技術分享

      這時我在想為什麽呢?原來我只是給data目錄設置了讀寫權限,但是沒有給它的子目錄設置讀寫權限。所以:    

        chmod -R 777 /data    遞歸設置權限

  8)對HDFS集群進行格式化,HDFS集群是用來存儲數據的。  

    hdfs namenode -format

3.3、啟動集群

  1)啟動HDFS集群      

    hadoop-daemon.sh start namenode 啟動主節點
    hadoop-daemon.sh start datanode 啟動從節點

    技術分享

  2)啟動YARN集群

    yarn-daemon.sh start resourcemanager
    yarn-daemon.sh start nodemanager

    技術分享

  3)啟動作業歷史服務器

    mr-jobhistory-daemon.sh start historyserver

    技術分享

  4)jps命令查看是否啟動成功

    技術分享

  5)HDFS和YARN集群都有相對應的WEB監控頁面

    HDFS:http://ip:50070

    技術分享

    YARN:http://ip:8088

    技術分享

  6)HDFS集群的簡單操作命令

    hdfs dfs -ls /

    技術分享

    hdfs dfs -mkdir -p /user/zyh

    技術分享

  7) YARN集群的操作----提交任務/作業

    計算PI值的作業:
    yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar pi 4 100

    技術分享

四、一個問題

我之前沒有註意發現我的yarn的從節點沒有啟動起來,在執行計算PI值的時候沒有成功才看到:

  技術分享

查看日誌發現是配置文件:

  在hdfs-site-web.xml中:

    技術分享

  查看http://1.0.0.5:50070可以查看從節點是否啟動:

    技術分享

  在執行上面使用yarn集群來計算pi值得命令:

    技術分享

  查看http://1.0.0.5:8088可以看出計算pi值得任務正在執行:

    技術分享

  最後成功:

     這裏就截圖了,電腦卡住了,上圖中在web頁面可以查看到任務執行成功,終端中會顯示執行結果!     

喜歡就點“推薦”哦!

Hadoop(二)搭建偽分布式集群