hadoop 集羣的配置

 

在通過幾天折騰,終於將hadoop環境搭建成功,整個過程當中遇到各類坑,反覆了不少遍,光虛擬機就從新安裝了四、5次,接下來就把搭建的過程詳細敘述一下html

0.相關工具:java

  

1,系統環境說明:node

我這邊給出個人集羣環境是由一臺主節點master和2臺從節點slave組成:  web

master 192.168.137.122
slave1 192.168.137.123
slave2 192.168.137.124

3個節點上均是CentOS7.0系統apache

2,虛擬機設置windows

  這裏用的是 VMware12.1,虛擬CentOS7環境,虛擬機環境配置以下:     centos

系統配置:

虛擬機:一個master,slave1, slave2
網絡設置:共享主機IP
內存:每一個虛擬機配置1024M內存
分區:自動
軟件選擇:基礎設施服務器
用戶設置:密碼都設置爲:hadoophadoop, 不建立任何用戶,操做時使用root直接進行

     完成VMware安裝後先設置,先在物理機中設置VMnet一、VMnet8 爲自動獲取IP 以下圖所示:緩存

並將3臺虛擬機網絡鏈接方式都設置爲:NAT模式,不然虛擬沒法上網安全

3,環境安裝服務器

插入CentOS7系統盤,選擇第一項進入系統安裝,稍後會彈出設置界面:

這裏咱們把環境設置爲:基礎設施服務器,不然會各類 "command not found..."他提供了,hadoop服務的基礎環境

下面是選擇"安裝位置",這裏我直接默認了,接下來很重要,設置網路和主機名,折騰好了,就不用安裝完系統後在使用命令設置了

主機名的位置,添寫"master",點擊右側"配置",在出現的網絡設置中選擇"IPv4設置",在出現的"方法"中選擇手動,點擊添加,設置"master"對應的IP,出現以下界面:

其他兩臺slave,設置一致,若是虛擬直接拷貝的,可使用下列命令方法設置

1)修改主機名(分別在3臺虛擬機修改成:master、slave一、slave2):  

vi /etc/hostname

   進入編輯狀態後按"Insert"直接修改主機名,完成後,按"ESC",而後按住Shift 按兩次Z保存退出

2)修改IP地址(分別在3臺虛擬機修改成:192.168.137.122,192.168.137.123,192.168.137.124):

vi /etc/sysconfig/network-scripts/ifcfg-eno16777736(虛擬機的網卡通常默認都是ifcfg-eno16777736)

 增長如下內容:

BOOTPROTO=static          #設置爲靜態IP
ONBOOT=yes                #打開網卡
IPADDR=192.168.137.122    #設置IP,對應上面給出的四個IP地址,這裏是master的IP
NETMASK=255.255.255.0     #設置子網掩碼
GATEWAY=192.138.137.2     #設置網關

系統安裝完成後須要設置root帳號密碼,這裏我沒有添加新用戶,因此後續設置均經過root帳號完成。

4,配置host

經過下列命令打開hosts文件,修改hosts配置,3臺機器都須要

vi /etc/hosts

加入下列代碼

192.168.137.122 master
192.168.137.123 slave1
192.168.137.124 slave2

在完成以上步驟後reboot重啓3臺虛擬機:reboot

5,SSH無密碼驗證配置

  每臺機器能夠生成本身的一對公司鑰,私鑰本身保存。將本機做爲服務器,要經過無密鑰SSH訪問本機的機器做爲客戶端,首先將服務器的公鑰放到客戶端,客戶端將此公鑰放到authorized_keys中,能夠將authorized_keys認爲是公鑰的字典文件,由於能夠放多個服務器的公鑰進去,便可實現無密鑰SSH訪問。

  Hadoop運行過程當中,須要管理遠端Hadoop守護進程,在Hadoop啓動之後,NameNode是經過SSH(Secure Shell)來啓動和中止各個DataNode上的各類守護進程的。這就必須在節點之間執行指令的時候是不須要輸入密碼的形式,故咱們須要配置SSH運用無密碼公鑰認證的形式,這樣NameNode使用SSH無密碼登陸並啓動DataName進程,一樣原理,DataNode上也能使用SSH無密碼登陸到NameNode。

在各節點上生成各自SSH祕鑰對(這裏祕鑰類型爲rsa,也能夠設置爲安全性更高的dsa),以master爲例。

建立祕鑰文件使用下列命令

ssh-keygen -t rsa 

截圖說明以下:

(參數說明參考:http://killer-jok.iteye.com/blog/1853451)

在本機上生成authorized_keys,並驗證可否對本機進行SSH無密碼登錄

在其他全部節點都生成本身的authorized_keys以後,經過ssh-copy-id命令拷貝各自的公鑰到其餘節點,公鑰會加入到對方機器的authorized_keys文件中,能夠將authorized_keys認爲是公鑰的字典文件,由於能夠放多個服務器的公鑰進去,便可實現無密鑰SSH訪問。下面以slave1節點爲例,將master節點的公鑰複製到slave1節點中並加入到受權的key中,並驗證是否配置成功。

在slave1中生成祕鑰文件

將master節點的公鑰複製到slave1節點中並測試鏈接

在slave中使用 more 查看完成公鑰複製後的文件

6,安裝jdk環境設置

WinSCP是一個很好用的工具能夠在windows物理機與虛擬之間傳遞文件

輸入鏈接虛擬機機的IP,用戶名,密碼,連接成功後,上傳jdk與hadoop到"/usr/local"目錄下(這裏目錄可隨意指定,稍後會登錄到虛擬機解壓安裝)

 使用 tar -zvxf jdk-8u91-lunux-x64.tar.gz 解壓

 

經過mv修改文件夾名稱

配置jdk環境變量

vi /etc/profile

在尾部,加入下面內容: 

(固然這裏也可使用WinSCP在windows 中修改。)

保存退出後,執行下列命令 讓更改及時生效

source /etc/profile

而後,執行下列命令驗證安裝成功

java -version

若是顯示的版本與咱們安裝的版本一致,即安裝成功

7,安裝hadoop環境設置

 使用 tar -zvxf hadoop-2.7.2.tar.gz 解壓

移動到安裝目錄,我這裏是"home/hadoop",可自定義

配置hadoop環境變量,仍是修改剛剛配置jdk環境變量的文件

vi /etc/profile

在尾部,加入下面內容: 

保存退出後,執行下列命令 讓更改及時生效

source /etc/profile

而後,執行下列命令驗證安裝成功

hadoop version

正常會顯示版本信息

配置 ~/hadoop/etc/hadoop下的hadoop-env.sh、yarn-env.sh、mapred-env.sh

使用命令:

 

vi /home/hadoop/etc/hadoop/hadoop-env.sh

 

修改JAVA_HOME

使用命令: 

vi /home/hadoop/etc/hadoop/yarn-env.sh

 修改JAVA_HOME

使用命令: 

vi /home/hadoop/etc/hadoop/mapred-env.sh

修改JAVA_HOME

配置系統目錄:Hadoop程序存放目錄爲/home/hadoop/,能夠將程序和數據目錄分開,能夠更加方便的進行配置的同步,具體目錄的配置以下所示:

l  在每一個節點上建立程序存儲目錄/home/hadoop/,用來存放Hadoop程序文件。

l  在每一個節點上建立數據存儲目錄/home/hadoop/hdfs,用來存放集羣數據。

l  在主節點node上建立目錄/home/hadoop/hdfs/name,用來存放文件系統元數據。

l  在每一個從節點上建立目錄/home/hadoop/hdfs/data,用來存放真正的數據。

l  全部節點上的日誌目錄爲/home/hadoop/logs。

l  全部節點上的臨時目錄爲/home/hadoop/tmp。

執行命令mkdir -p  /home/hadoop/logs,爲尚未的目錄建立,後面以此類推

8, 修改hadoop配置文件

Hadoop2.7.2配置文件在hadoop/etc/hadoop目錄下,配置文件也被分紅了4個主要的配置文件須要配置其中包含:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。 

 

core-site.xml

<configuration>
       <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:8020</value>
             <description> 設定 namenode 的 主機名 及 端口 </description>
       </property>
       <property>
                <name>io.file.buffer.size</name>
                <value>131072</value>
        <description> 設置緩存大小 </description>
        </property>
       <property>
               <name>hadoop.tmp.dir</name>
               <value>file:/home/hadoop/tmp</value>
               <description> 存放臨時文件的目錄 </description>
       </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs/name</value>
        <description> namenode 用來持續存放命名空間和交換日誌的本地文件系統路徑 </description> 
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs/data</value>
        <description> DataNode 在本地存放塊文件的目錄列表,用逗號分隔 </description> 
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
        <description> 設定 HDFS 存儲文件的副本個數,默認爲3 </description>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

mapred-site.xml

<configuration>  
    property>
        <name>mapreduce.framework.name</name>
                <value>yarn</value>
                <final>true</final>
        </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>master:50030</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.address</name>
            <value>master:10020</value>
    </property>
    <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>master:19888</value>
    </property>
        <property>
                <name>mapred.job.tracker</name>
                <value>http://master:9001</value>
        </property>
</configuration>  

yarn-site.xml

<configuration>
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>                                                                
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
</configuration>

 9,設置hadoop集羣

master上配置好的hadoop所在文件夾"/home/hadoop"複製到全部的Slave的"/home"目錄下,而沒必要每臺機器都要安裝設置,用下面命令格式進行。
例如:從"master"到"slave1"複製配置Hadoop的文件:

scp –r /home/hadoop root@slave1:/home/

複製完成後在master上配置節點信息(其他節點不須要),使用下列命令

vi /home/hadoop/etc/hadoop/slaves

去掉"localhost",每行只添加一個主機名或者IP地址

10,格式化HDFS文件系統

輸入命令:

cd /home/hadoop
hadoop namenode -format

若是不出錯大體會顯示以下信息:

次數如產生錯誤,基本都是配置文件的問題,諸如不識別中文,配置文件中指定的路徑不存在,等等,請認真檢查配置文件

11,啓動hadoop服務

cd /home/hadoop
sbin/start-all.sh

如無異常顯示以下內容

命令「sbin/stop-all.sh」中止hadoop服務

12,服務驗證

  • java自帶的小工具jps查看進程

  在master應該輸出如下信息(端口號僅供參考)

  

  在slave應該輸出如下信息(端口號僅供參考)

  

  若不顯示DataNode進程,表示DataNode節點啓動失敗,這裏能夠在slave節點中查看日子中的錯誤  

more /home/hadoop/logs/hadoop-root-datanode-slave2.log

  

  根據日誌得知 datanode的clusterID 和 namenode的clusterID 不匹配將slave節點中/home/hadoop/hdfs/data/current/VERSION文件中的clusterID 修改成與master中的一致從新啓動服務便可。 

  • 經過網頁查看

  先使用下面命令關閉防火牆

systemctl stop firewalld 

  輸入如下網頁, http://192.168.137.122:50070/dfshealth.html#tab-overview 進入hadoop管理首頁

 

PS:參考文獻

  http://www.cnblogs.com/baiboy/p/4639474.html
  http://www.tuicool.com/articles/mQfInyZ
  http://www.centoscn.com/image-text/install/2014/1121/4158.html
http://blog.csdn.net/circyo/article/details/46724335 http://www.cbdio.com/BigData/2016-08/04/content_5156440.htm
http://blog.csdn.net/xw13106209/article/details/6855294
相關文章
相關標籤/搜索