1. 程式人生 > >Hadoop分散式環境搭建

Hadoop分散式環境搭建

Hadoop 2.x部署
  *local Mode
  *Distributed Mode 
        *偽分散式
            一臺機器,執行所有的守護程序
             從節點DataNode、NodeManager
        *完全分散式
            有多個從節點
            DataNodes
             NodeManagers
            配置檔案
                 $HADOOP_HOME/etc/hadoop/slaves

1. 基於偽分散式安裝

三臺機器

192.168.113.132
Hadoop-senior01
    1.5G
    1CPU

192.168.113.133
Hadoop-senior02
    1G
    1CPU

192.168.113.134
Hadoop-senior03

    1G
    1CPU

Hadoop克隆之後應做的步驟:

這裡寫圖片描述

vi /etc/udev/rules.d/70-persistent-net.rules

這裡寫圖片描述

這裡寫圖片描述

vi /etc/sysconfig/network-scripts/ifcfg-eth0
重新啟動虛擬機器,然後從桌面修改靜態IP地址
這裡寫圖片描述

sudo vi /etc/resolv.conf
如果是複製而非克隆虛擬機器需要:
  重新生成Make碼
這裡寫圖片描述

每個虛擬機器都要寫這三個
  192.168.113.132 hadoop-senior01.ibeifeng.com hadoop-senior01
  192.168.113.133 hadoop-senior02.ibeifeng.com hadoop-senior02
  192.168.113.134 hadoop-senior03.ibeifeng.com hadoop-senior03
這裡寫圖片描述

* 建議:*
  如下兩個地方進行配置對映
   1)叢集的各個機器
   2)所有的客戶端機器
    hosts
  建立使用者:
   ibeifeng
  建立目錄
   軟體安裝
  基本設定
   關閉防火牆
   禁用SELINUX=disable
   解除安裝OpenJDK
  時間同步
   各個機器的時間一致
   方式很多種:
  1、聯網情況下:
   與網路標準時間進行同步
  2、內網情況下
   至少我可以保證叢集的所有時間是同步的
   叢集時間同步
   >> 找一臺機器作為時間伺服器
      hadoop-senior01.ibeifeng.com
       具體步驟如下:
       1) 檢視時間伺服器是否安裝
               sudo rpm -qa|grep ntp
這裡寫圖片描述

        2) 啟動時間伺服器
         sudo service ntpd status
         sudo service ntpd start
        永久啟動
         sudo chkconfig ntpd on
       3)配置:
         $sudo vi /etc/ntp.conf
       修改如下:
         第一處:去掉註釋,修改網段
 這裡寫圖片描述

          第二處:增加註釋
這裡寫圖片描述

         第三處:去掉註釋
這裡寫圖片描述

       4)設定系統時間與bois時間一致
          開啟配置檔案,首行加入
這裡寫圖片描述

這裡寫圖片描述

》》》叢集中其他機器,定時與時間伺服器進行同步時間
    定時任務crontab
    每臺機器,每十分鐘與機器進行同步
    0-59/10 * * * * /usr/sbin/ntpdate ntpdate hadoop-senior01.ibeifeng.com
   對第三臺機器同樣進行設定
           調整與第一臺時間的同步
這裡寫圖片描述

         建立crontab定時任務
這裡寫圖片描述

這裡寫圖片描述

2、規劃機器與服務

在分散式環境下,所有的安裝目錄要相同
  Hadoop-senior01      Hadoop-senior02      Hadoop-senior03
HDFS
    NameNode
    DataNodes         DataNodes        DataNode
                              SecondaryNode

YARN
                  ResourceManager
    NodeManager         NodeManager      NodeManager

MapReduce
   JobHistoryServer

3、修改配置檔案,設定服務執行機器節點

 *hdfs
         NameNode
         DataNode
         SNN
       *hadoop-env.sh
       *core-site.xml
       *hdfs-site.xml
       *slaves
*yarn
       ResourceManager
       NodeManager
       *yarn-env.sh
       *yarn-site.xml
       *slaves
*mapreduce
       JobHistoryServer
       *mapred-env.sh
       *mapred-site.xml

配置Hadoop檔案Hadoop-senior01
解壓Hadoop檔案到固定目錄下(三臺機器的目錄相同)

這裡寫圖片描述

將原來Hadoop-senior01中配置好的Hadoop檔案拷貝到新的etc/hadoop目錄下
這裡寫圖片描述

配置hdfs檔案
  1)在Hadoop-env.sh中配置JDK
這裡寫圖片描述

  2)在core-site.xml中配置
這裡寫圖片描述

  3)在hdfs-site.xml上配置
這裡寫圖片描述

  4)在slaves上配置
這裡寫圖片描述

配置yarn檔案
  1)在yarn-env.sh配置環境變數
這裡寫圖片描述

  2)在yarn-site.xml上配置
這裡寫圖片描述

配置mapreduce檔案
  1)在mapred-env.sh上配置檔案
這裡寫圖片描述

  2)在mapred-site.xml上配置
這裡寫圖片描述

4、分發HADOOP安裝包至各個機器節點

這裡寫圖片描述

  ssh無密碼登入配置
這裡寫圖片描述
這裡寫圖片描述

  把金鑰拷貝到另外兩臺機器上
這裡寫圖片描述

  遠端連線成功
這裡寫圖片描述

 分發:
這裡寫圖片描述

scp -r hadoop-2.5.0/ hadoop-senior02.ibeifeng.com:/home/ibeifeng/opt/app
SSH無密碼登入總結:
 HDFS
   start-dfs.sh
   主節點上NameNode
 SSH無金鑰登入
》》生成一對公鑰和私鑰
    $ssh-keygen -t rsa
》》拷貝公鑰到各個機器上
   $ssh-copy-id hadoop-senior01.ibeifeng.com
   $ssh-copy-id hadoop-senior02.ibeifeng.com
   $ssh-copy-id hadoop-senior03.ibeifeng.com
》》ssh連線測試
   $ssh hadoop-senior01.ibeifeng.com
   $ssh hadoop-senior02.ibeifeng.com
   $ssh hadoop-senior03.ibeifeng.com
 YARN
   start-yarn.sh
   主節點:resourcemanager
5、啟動服務元件進行測試
 *啟動
  >>HDFS
  1、HDFS的格式化
   在NameNode所在的機器上進行格式
這裡寫圖片描述

    啟動namenode
這裡寫圖片描述

   啟動datanode
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

測試
    建立使用者主目錄
     bin/hdfs dfs -mkdir -p mapreduce/wordcount/input
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

*測試
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
$ sbin/mr-jobhistory-daemon.sh start historyserver