1. 程式人生 > >hadoop-2.7.6 完全分散式的安裝

hadoop-2.7.6 完全分散式的安裝

準備環境

          CentOS 7

          jdk1.8 (這裡建議使用1.8版本的jdk 連結:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)

          hadoop-2.7.3.tar.gz ( 連結:http://mirrors.hust.edu.cn/apache/hadoop/

 

機器環境

       使用三臺機器搭建hadoop叢集,其中一臺為Master,兩臺為Slave1.Slave2; (搭建叢集的機器數量最好為奇數,包括master)

           

             這裡我們準備三臺機器,來搭建一個小型hadoop分散式叢集,分別是 master(主節點),slave1,slave2  。

 

              三臺機器IP 如下:

 

  • 192.168.1.106
  • 192.168.1.105
  • 192.168.1.104

    三臺機器在叢集中的作用:

    master 擔任 NameNode、DataNode、ResourceManager、NodeManager

    slave1 擔任 DataNode、NodeManager

    slave2 擔任 DataNode、NodeManager

 

 

hadoop環境準備

         設定主機名

     

    開啟後ins進入編輯模式 輸入主機名 master;同理 slave步驟也一樣  (我這裡已經設定好了)

    

    Esc  :wq!  儲存退出

    

    這裡需要重啟 主機名生效

  設定IP與主機名對映

    

    進入編輯IP與主機名對映

    

              # 這裡 三臺機器都要需要此操作 

              #這裡 注意 IP與主機名之間 應有一個空格

    在之後新增叢集 則需要在 /etc/hosts中新增對映關係 並且分發個各個叢集

  關閉防火牆

       systemctl stop firewalld.service

       systemctl disable firewalld.service

    

  配置ssh免密登入

    叢集之間的機器需要相互通訊,所以我們必須先配置免密碼登入。在三臺機器上都得配置免密。(每臺機器都需要配置)

    

    以 rsa 演算法生成金鑰。連續按四個空格,有yes輸入yes

    完成之後 ls -la 檢視當前隱藏檔案

    看到一個 .ssh 的檔案 這就是剛才生成的 存放金鑰的資料夾

    有.ssh 說明你金鑰已經生成成功了!!!

    

    cd .ssh  cd 進去之後可以看到有兩個檔案 

    

    id_rsa 為私鑰

    id_rsa.pub 為公鑰

    known_hosts 進行記錄連結到對方時,對方給的host key進行簡單的驗證 (首次建立免密且沒有任何連結的 是沒有這個檔案)

 

    給金鑰新增許可權:

    chmod 600 ~/.ssh/authorized_keys

    

 

    複製公鑰檔案 給 authorized_keys 

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (首次建立免密且沒有任何連結的 是沒有這個檔案)

    #注意 檔案明必須是 這個名稱!!!

    按照以上步驟 把slave1, slave2 ,的 公鑰 拷貝到 authorized_keys 檔案中。(這裡只有一個authorized_keys檔案,且內容包括 master,slave1,slave2,的公鑰)

    把三臺機器的公鑰拷貝給 authorized_keys 後。分發給各個slave 

    scp ~/.ssh/authorized_keys [email protected]:~/  (同理分發給 slave1,slave2 ,)

 

    驗證是否 免密成功

    以下操作在主節點master上

    ssh master(此步驟是驗證master是否給master免密成功)

    ssh slave1

    ssh slave2

    

    

 

    

    

    出現這種情況表明ssh免密成功

    exit 退出當前使用者

    

  安裝jdk

   上傳jdk安裝包到 Linux 上 (參考軟體 Xshell 等)

    解壓 jdk 

    tar -zxvf jdk-8u152-linux-x64.tar.gz   (解壓到當前目錄下)

   配置環境變數

    

    vi /etc/profile 開啟後再最後加上一下幾句話:

    export JAVA_HOME=/root/usr/java/jdk1.8.0_152

      export PATH=$JAVA_HOME/bin:$PATH

    

       使用source /etc/profile讓profile檔案立即生效。

    

       輸入 java 命令測試是否完成

    如出現以下情況 則完成環境的安裝:

    

    輸入 java -version 來驗證,如出現以下則為成功:

    

      輸入 jps

    

    出現 jps則成功

  hadoop安裝

    下載hadoop-2.7.3.tar.gz 解壓

    tar -zxvf hadoop-2.7.3.tar.gz   (解壓到當前目錄)

    cd 到Hadoop目錄下

    cd hadoop-2.7.3/etc/hadoop/

    

  配置環境變數 hadoop-env.sh

    進入Hadoop目錄下

    ls 檢視 檔案

     

    vi hadoop-env.sh

    開啟後在檔案靠前的一部分找到

    export JAVA_HOME=${JAVA_HOME}

    

    修改為你本機 jdk安裝的路徑

    

    這裡修改的是我本機 jdk 的路徑

    儲存 退出 :wq!

   配置環境變數 yarn-env.sh

    vi yarn-en.sh

    在檔案靠前一部分找到以下程式碼:

    # export JAVA_HOME=/home/y/libexec/jdk1.6.0/

    

    將這行程式碼修改為下面的程式碼(將#號去掉):

    export JAVA_HOME=/root/usr/java/jdk1.8.0_152  (這裡是本機的 jdk 路徑)

    

 

  配置核心元件 core-site.xml 

    vi core-site.xml

    用下面的程式碼替換 <configuration> 中的內容:

    <property>
         <name>fs.defaultFS</name>
       <value>hdfs://master:8020</value>
    </property>

  

  配置檔案系統 hdfs-site.xml

    vi hdfs-site.xml

    用下面的程式碼替換 <configuration> 中的內容:

    <property>
       <name>hadoop.tmp.dir</name>
       <value>/root/hadoop_tmp</value>
    </property>

  

  配置檔案系統 yarn-site.xml

    vi yarn-site.xml 

    用下面的程式碼替換 <configuration> 中的內容:

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

  配置計算框架 mapred-site.xml

    先把mapred-site-template.xml更名為 mapred-site.xml

    mv mapred-site-template.xml mapred-site.xml

    vi mapred-site.xml

    用下面的程式碼替換 <configuration> 中的內容:

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

   在 master 節點配置 slaves 檔案

    vi slaves

    用下面的程式碼替換 slaves 中的內容:

    slave1

    slave2

    以上配置是叢集的主機名 (如需要新增叢集 這裡配置需要新增)

 

 

  #以上配置需要都在slave等從機設定以上配置,或者手動新增配置,或者拷貝過去。

  配置 Hadoop 啟動的系統環境變數

    先回到根目錄

    cd ~

    vi  .bash_profile

    

    export HADOOP_HOME=/root/bigdata/hadoop-2.7.3

    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

    

    重新整理環境變數

    source ~/.bash_profile

 

  格式化 Hadoop 叢集

    首先進入Hadoop安裝目錄下 的 bin 目錄

    hdfs namenode -format

    至此格式化完成,Hadoop安裝完成

 

  啟動 Hadoop 叢集

    首先進入Hadoop安裝目錄下 

    sbin/start-all.sh    (只需要在master節點上啟動一次,無需再slave節點上啟動此命令!!!)

 

    出現以下情況Hadoop則為啟動成功:

    

    在master節點上輸入 jps 檢視程序

    

    在slave節點上分別輸入 jps 檢視程序

    

    

    出現以上程序則為成啟動成功

    

    為驗證是否Hadoop啟動成功,請在同區域網下的瀏覽器下輸入

    master:50070  (有部分情況顯示解析不了 則把master換成master節點機器的ip地址

    

    可以發現 存活的節點 數量為 2 。可是我們是三臺機器

    開始排查錯誤

    開啟web管理介面的 DataNode

    

    檢視存活的節點

    

    可以發現 slave1, slave2 。節點存活正常,而管理介面可以開啟,則master的namenode為正常,因無資料 則 DataNode 可能沒有啟動

    我們單獨先啟動DataNode程序

    首先進入Hadoop目錄下

    輸入以下命令:

    sbin/hadoop-daemon.sh start datanode

    

    啟動完成,我們jps檢視以下啟動的程序,看看DataNode啟動沒有

    

    可以發現 DataNode啟動成功,我們開啟web管理介面 重新整理看看有沒有master節點

    

 

    可以看到 master(主節點)啟動成功;

 

    現在開啟yarn管理介面

    

    存活節點為 2 節點 slave1,slave2,都為正常

 

  Hadoop停止

    首先進入Hadoop安裝目錄下

    sbin/stop-all.sh

    

    出現次情況則停止成功!!!此外 我們剛才單獨啟動了 DataNode 我們再次 jps 檢視一下程序 

    

    

    

    可以看出 master 節點上 DataNode 沒有停止。slave節點上都正常停止。

    接下來我們單獨 關閉 DataNode 節點

    

    master slave 節點程序全部關閉完成!!(在關機前必須得關閉所有的程序!!!)

    

     至此 Hadoop安裝完成安裝 謝謝!!