hadoop 集群的配置


 

在經過幾天折騰,終於將hadoop環境搭建成功,整個過程中遇到各種坑,反復了很多遍,光虛擬機就重新安裝了4、5次,接下來就把搭建的過程詳細敘述一下

0.相關工具:

  

1,系統環境說明:

我這邊給出我的集群環境是由一台主節點master和2台從節點slave組成:  

master 192.168.137.122
slave1 192.168.137.123
slave2 192.168.137.124

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

2,虛擬機設置

  這里用的是 VMware12.1,虛擬CentOS7環境,虛擬機環境配置如下:     

系統配置:

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

     完成VMware安裝后先設置,先在物理機中設置VMnet1、VMnet8 為自動獲取IP 如下圖所示:

並將3台虛擬機網絡連接方式都設置為:NAT模式,否則虛擬無法上網

3,環境安裝

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

這里我們把環境設置為:基礎設施服務器,否則會各種 "command not found..."他提供了,hadoop服務的基礎環境

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

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

其余兩台slave,設置一致,如果虛擬直接拷貝的,可以使用下列命令方法設置

1)修改主機名(分別在3台虛擬機修改為:master、slave1、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




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM