Hadoop2.6.0安裝 — 集羣

文 / vincentzhhtml

原文鏈接:http://www.cnblogs.com/vincentzh/p/6034187.htmlnode

  這裏寫點 Hadoop2.6.0集羣的安裝和簡單配置,一方面是爲本身學習的過程作以記錄,另外一方面但願也能幫助到和LZ同樣的Hadoop初學者,去搭建本身的學習和練習操做環境,後期的 MapReduce 開發環境的配置和 MapReduce 程序開發會慢慢更新出來,LZ也是邊學習邊記錄更新博客,路人若有問題歡迎提出來一塊兒探討解決,不足的地方但願路人多指教,共勉! web

目錄

  1. 環境準備
  2. 網絡配置
  3. 配置SSH登錄
  4. 配置環境變量
  5. 配置集羣/分佈式
  6. 啓動集羣/分佈式
  7. 問題排查

  本文主要詳述配置 Hadoop 集羣,默認路人已經掌握了 Hadoop 單機/僞分佈式的配置,不然請查閱 Hadoop2.6.0安裝 — 單機/僞分佈。單機/僞分佈式的配置是基礎,集羣的配置也不過是再單機/僞分佈的基礎上橫向擴展節點而已,另外在開發的過程當中,也是單機/僞分佈都要去用,或者和集羣之間相互切換進行調試和運行代碼。vim

環境準備

環境的準備和上篇(Hadoop2.6.0安裝 — 單機/僞分佈)的環境一致,由於LZ也是在一臺電腦上搞的虛擬機學習的,Virtual Box虛擬機下Ubuntu14.04 64位系統,Hadoop版本就不用再囉嗦了吧,題目上寫清楚了。此處集羣包含了3個節點(機器),其中一個作 Master 節點(NameNode),其餘兩臺機器做爲 Slave 節點(DataNode)。網絡

OK,既然集羣有三個節點,須要先將三個虛擬環境準備好,才能開始集羣的配置,整個流程以下:app

  1. 三臺機器都準備好 Linux 環境,分別配置 hadoop 用戶,安裝 SSH server、配置 Java 環境;
  2. 肯定一臺機器做爲 Master 節點(虛擬環境隨便指定一個都行啦,但生產環境可要用最牛逼的機器來作哈,畢竟 Master 躺了比較麻煩);
  3. 在肯定的 Master 節點上安裝 Hadoop,並完成集羣配置;
  4. 將 Master 節點上 Hadoop 的安裝目錄直接 copy 到全部的 Salve 節點便可;
  5. 在 Master 節點啓動集羣。

網絡配置

VirtualBox須要爲三臺機器配置網絡,以保證集羣中的全部節點之間能夠互相通訊,須要更改網絡鏈接方式爲橋接(Bridge)模式,才能實現虛擬機之間的網絡互聯,同時須要確保各節點之間的Mac地址不一樣。VirtualBox虛擬機幾種網絡鏈接方式的異同能夠去這裏查看。eclipse

爲方便區分各個節點,能夠去修改下各個節點的主機名(直接改成你可以辨識的主機名)。ssh

1 $sudo vim /etc/hostname

 

 

 此處使用了一個Master節點,兩個Slave節點,須要在hosts文件中添加上節點的與IP的映射關係(全部節點都須要修改,節點直接用SSH直接鏈接的時候能夠直接使用主機名鏈接)。webapp

1 $sudo vi /etc/hosts

 

 

測試網絡鏈接。全部節點之間的鏈接都須要逐個測試,以保證全部節點直接可以互聯互通。分佈式

1 $ping Slave0 -c 3

 

配置SSH登錄

這個操做是要讓 Master 節點能夠無密碼 SSH 登錄到各個 Slave 節點上。

首先生成 Master 節點的公匙,在 Master 節點的終端中執行(由於改過主機名,因此還須要刪掉原有的再從新生成一次):

$cd ~/.ssh               # 若是沒有該目錄,先執行一次ssh localhost,生成.ssh目錄
$rm ./id_rsa*            # 刪除以前生成的公匙(若是有)
$ssh-keygen -t rsa       # 一直按回車就能夠
$cat ./id_rsa.pub >> ./authorized_keys

 

在 Master 節點將上公匙傳輸到 Slave0 和 Slave1 節點:

$scp ~/.ssh/id_rsa.pub hadoop@Slave0:/home/hadoop/
$scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

 

將Master節點的公鑰傳輸到Slave節點後,須要分別在兩個節點上將Master節點傳輸過來的公鑰加入受權。這樣,在 Master 節點上就能夠無密碼 SSH 到各個 Slave 節點了,可在 Master 節點上執行以下命令進行檢驗,以下圖所示:

配置環境變量

配置好 Hadoop 相關的全部環境變量,具體配置在這裏,一樣若是爲了方便操做 DataNode,能夠將 Slave 節點上Hadoop安裝目錄下的 /sbin 和 /bin 都添加到 $PATH 環境變量中。

配置集羣/分佈式

集羣/分佈式模式須要修改 /usr/local/hadoop/etc/hadoop 中的5個配置文件,更多設置項可點擊查看官方說明,這裏僅設置了正常啓動所必須的設置項: slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 。(比僞分佈多了一個slaves文件)

  1.  slaves文件,將做爲 DataNode 的主機名寫入該文件,每行一個,默認爲 localhost,因此在僞分佈式配置時,節點即做爲 NameNode 也做爲 DataNode。分佈式配置能夠保留 localhost,也能夠刪掉,讓 Master 節點僅做爲 NameNode 使用。LZ直接將 Slave0 和 Slave1 都加入其中。

  2. core-site.xml(此處須要主義 fs.defaultFS 屬性,LZ在用window上的eclipse配置開發環境的時候一直配置不成功,但將 Master 改成具體IP地址以後沒問題,這裏將在開發環境配置的時候詳述)

 1     <configuration>
 2             <property>
 3                     <name>fs.defaultFS</name>
 4                     <value>hdfs://Master:9000</value>
 5             </property>
 6             <property>
 7                     <name>hadoop.tmp.dir</name>
 8                     <value>file:/usr/local/hadoop/tmp</value>
 9                     <description>Abase for other temporary directories.</description>
10             </property>
11     </configuration>

 

  3. hdfs-site.xml,dfs.replication 通常設爲 3,但咱們只有兩個 Slave 節點,因此 dfs.replication 的值仍是設爲 2:

 1     <configuration>
 2             <property>
 3                     <name>dfs.namenode.secondary.http-address</name>
 4                     <value>Master:50090</value>
 5             </property>
 6             <property>
 7                     <name>dfs.replication</name>
 8                     <value>1</value>
 9             </property>
10             <property>
11                     <name>dfs.namenode.name.dir</name>
12                     <value>file:/usr/local/hadoop/tmp/dfs/name</value>
13             </property>
14             <property>
15                     <name>dfs.datanode.data.dir</name>
16                     <value>file:/usr/local/hadoop/tmp/dfs/data</value>
17             </property>
18     </configuration>

 

  4. mapred-site.xml(須要先重命名,默認文件名爲 mapred-site.xml.template,由於默認狀況只配置HDFS),而後配置修改以下:

 1     <configuration>
 2             <property>
 3                     <name>mapreduce.framework.name</name>
 4                     <value>yarn</value>
 5             </property>
 6             <property>
 7                     <name>mapreduce.jobhistory.address</name>
 8                     <value>Master:10020</value>
 9             </property>
10             <property>
11                     <name>mapreduce.jobhistory.webapp.address</name>
12                     <value>Master:19888</value>
13             </property>
14     </configuration>

 

  5. yarn-site.xml

 1     <configuration>
 2             <property>
 3                     <name>yarn.resourcemanager.hostname</name>
 4                     <value>Master</value>
 5             </property>
 6             <property>
 7                     <name>yarn.nodemanager.aux-services</name>
 8                     <value>mapreduce_shuffle</value>
 9             </property>
10     </configuration>

 

配置好後,將 Master 上的 /usr/local/hadoop 文件夾複製到各個節點上。

注:若是以前在Master節點上啓動過Hadoop,須要在copy以前先刪除hadoop目錄下的 tmp 文件和 logs下的文件。在 Master 節點上執行:

1 $cd /usr/local
2 $sudo rm -r ./hadoop/tmp     # 刪除 Hadoop 臨時文件
3 $sudo rm -r ./hadoop/logs/*   # 刪除日誌文件
4 $tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先壓縮再複製
5 $cd ~ 6 $scp ./hadoop.master.tar.gz Slave0:/home/hadoop

 

 copy結束後,在Slave0和Slave1節點上直接將copy過來的目錄解壓便可(Master節點須要和Slave節點有相同的配置)。

1 $sudo rm -r /usr/local/hadoop    # 刪掉舊的(若是存在)
2 $sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
3 $sudo chown -R hadoop /usr/local/hadoop

 

 

啓動集羣/分佈式

首次啓動須要先在 Master 節點執行 NameNode 的格式化,以後的啓動不須要再去進行:

1 $hdfs namenode -format

 

逐個啓動全部守護進程,並在各個節點經過jps查看全部守護進程啓動狀況。

1 $start-dfs.sh
2 $start-yarn.sh
3 $mr-jobhistory-daemon.sh start historyserve

 

Master節點

Slave0節點

Slave節點

要確保全部的守護進程都可以正常啓動。另外還須要在 Master 節點上經過命令 hdfs dfsadmin -report 查看 DataNode 是否正常啓動,若是 Live datanodes 不爲 0 ,則說明集羣啓動成功。例如我這邊一共有 2 個 Datanodes:

關閉集羣一樣也是在Master節點上執行

1 $stop-yarn.sh
2 $stop-dfs.sh
3 $mr-jobhistory-daemon.sh stop historyserver

問題排查

若是有任何節點沒法啓動或啓動不正常,須要在各自的 logs 文件中查找啓動日誌,逐個排查問題緣由。常見的緣由以下:

  • hosts 文件中的主機名和 IP 映射錯誤;
  • 5個配置文件中的有拼寫錯誤,或者關鍵信息(如:IP地址)設置錯誤;
  • LZ 碰到過的,特麼真心詭異的問題,全部問題全排查過都OK的,就是有個DataNode啓不起來,後來才發先 slaves 文件被污染,但查看顯示正常,將 slaves 文件刪除後重建添加DataNode主機名便可。
相關文章
相關標籤/搜索