hadoop僞分佈式安裝

hadoop僞分佈式安裝筆記html

參考 https://www.cnblogs.com/zhangyinhua/p/7647686.htmljava

https://blog.csdn.net/javastart/article/details/47187733node

1、Hadoop的三種運行模式(啓動模式)linux

1.一、單機模式(獨立模式)(Local或Standalone  Mode)

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

  -不對配置文件進行修改。
  -使用本地文件系統,而不是分佈式文件系統。
  -Hadoop不會啓動NameNode、DataNode、JobTracker、TaskTracker等守護進程,Map()和Reduce()任務做爲同一個進程的不一樣部分來執行的。
  -用於對MapReduce程序的邏輯進行調試,確保程序的正確。ubuntu

1.二、僞分佈式模式(Pseudo-Distrubuted Mode)

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

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

    以及其餘的守護進程交互。相似於徹底分佈式模式,所以,這種模式經常使用來開發測試Hadoop程序的執行是否正確。
  -修改3個配置文件:core-site.xml(Hadoop集羣的特性,做用於所有進程及客戶端)、hdfs-site.xml(配置HDFS集羣的工做屬性)、mapred-site.xml(配置MapReduce集羣的屬性)
  -格式化文件系統網絡

1.三、全分佈式集羣模式(Full-Distributed Mode)

  -Hadoop的守護進程運行在一個集羣上 分佈式

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

 

2、搭建僞分佈式集羣的前提條件

環境:在ubuntu17.04

    jdk1.8.0_131

    hadoop 2.8.1

2.一、可以正常運行的Ubuntu操做系統

  我實驗時候把java和hadoop都安裝到/usr/local目錄下,要保證當前用戶對/usr/local目錄有讀寫權限: 

  1)sudo chmod 777 /usr/local/ -R 

    將/usr/local的權限給爲777(漏洞文件),不推薦在生產環境中使用。可是能夠在學習和調試環境中使用。     

  2)sudo

    在啓動Hadoop的各個守護進程的時候,須要使用sudo。
    在管理Hadoop的時候,實際上由不一樣的用戶啓動不一樣集羣的守護進程。
    統一使用當前的用戶管理全部集羣。

  3)該目錄的全部者設置爲當前用戶

2.二、安裝JDK,並配置環境變量

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

  2)解壓到/usr/local目錄下

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

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

  3)建立軟連接

    sudo ln -snf /usr/local/jdk1.8.0_131 /usr/local/jdk

    

    注意:建立軟鏈接的目的是爲了,咱們在作項目的時候,可能會用到不一樣的jdk版本,這是要換軟件的話,只須要修改軟連接就能夠了。而不用修改配置文件。

  4)配置環境變量   

    局部環境變量:~/.bashrc
    全局環境變量:/etc/profile
    export JAVA_HOME=/usr/local/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、搭建僞分佈式集羣

3.一、安裝hadoop

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

    sudo  tar zxvf hadoop-2.8.1.tar.gz -C /usr/local

  2)建立軟連接

    ln -snf /usr/local/hadoop-2.8.1   /usr/local/hadoop  

    

  3)配置環境變量  

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

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

    

3.二、配置hadoop

 

  

  配置文件存放在/usr/local/hadoop/etc/hadoop中有n多個文件,暫時咱們只須要修改的只有5個

  1)hadoop-env.sh

    大約在25行左右   

  export JAVA_HOME=${JAVA_HOME}改爲export JAVA_HOME=/usr/local/jdk

    注意:在配置文件中有提示咱們怎麼設置,咱們通常不刪除,二回選擇註釋它的提示。

  2)core-site.xml 設置集羣中NameNode結點的URI(包括協議、主機名稱、端口號)

      <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:///home/server/data/hadoop/hdfs/nn</value>
                </property>
                <property>
                    <name>dfs.namenode.ch
                    eckpoint.dir</name>
                    <value>file:///home/server/data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.namenode.checkpoint.edits.dir</name>
                    <value>file:///home/server/data/hadoop/hdfs/snn</value>
                </property>
                <property>
                    <name>dfs.datanode.data.dir</name>
                    <value>file:///home/server/data/hadoop/hdfs/dn</value>
                </property>
            </configuration>
複製代碼

    

 

  4)mapred-site.xml  配置 mapreduce.framework.name,MapReduce的運行方式,取值local、classic或yarn其中之一,設置爲yarn,爲在yarn集羣上運行

    在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 /home/server/data/hadoop/hdfs/nn
        sudo mkdir -p /datahome/server/datahadoop/hdfs/dn
        sudo mkdir -p /home/server/data/hadoop/hdfs/snn
        sudo mkdir -p /home/server/data/hadoop/yarn/nm

   注意:  

    若是使用sudo啓動hadoop的相關進程,這幾目錄的權限能夠不用管。
    若是是使用當前的用戶啓動相關進程,對於opt目錄,當前用戶得有讀寫權限,對於/data目錄也須要讀寫權限。

   遇到問題:

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

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

        

      這時我在想爲何呢?原來我只是給data目錄設置了讀寫權限,可是沒有給它的子目錄設置讀寫權限。因此:    

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

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

    hdfs namenode -format

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

    

4、一個問題

我以前沒有注意發現個人yarn的從節點沒有啓動起來,在執行計算PI值的時候沒有成功纔看到:

  

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

  在hdfs-site-web.xml中:

    

  查看http://1.0.0.5:50070能夠查看從節點是否啓動:

    

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

    

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

    

  最後成功:

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

相關文章
相關標籤/搜索