Hadoop2.6.0安裝 — 集群


文 / vincentzh

原文連接:http://www.cnblogs.com/vincentzh/p/6034187.html

  這里寫點 Hadoop2.6.0集群的安裝和簡單配置,一方面是為自己學習的過程做以記錄,另一方面希望也能幫助到和LZ一樣的Hadoop初學者,去搭建自己的學習和練習操作環境,后期的 MapReduce 開發環境的配置和 MapReduce 程序開發會慢慢更新出來,LZ也是邊學習邊記錄更新博客,路人如有問題歡迎提出來一起探討解決,不足的地方希望路人多指教,共勉! 

目錄

  1. 環境准備
  2. 網絡配置
  3. 配置SSH登陸
  4. 配置環境變量
  5. 配置集群/分布式
  6. 啟動集群/分布式
  7. 問題排查

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

環境准備

環境的准備和上篇(Hadoop2.6.0安裝 — 單機/偽分布)的環境一致,因為LZ也是在一台電腦上搞的虛擬機學習的,Virtual Box虛擬機下Ubuntu14.04 64位系統,Hadoop版本就不用再啰嗦了吧,題目上寫清楚了。此處集群包含了3個節點(機器),其中一個做 Master 節點(NameNode),其他兩台機器作為 Slave 節點(DataNode)。

OK,既然集群有三個節點,需要先將三個虛擬環境准備好,才能開始集群的配置,整個流程如下:

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

網絡配置

VirtualBox需要為三台機器配置網絡,以保證集群中的所有節點之間可以互相通信,需要更改網絡連接方式為橋接(Bridge)模式,才能實現虛擬機之間的網絡互聯,同時需要確保各節點之間的Mac地址不同。VirtualBox虛擬機幾種網絡連接方式的異同可以去這里查看。

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

1 $sudo vim /etc/hostname

 

 

 此處使用了一個Master節點,兩個Slave節點,需要在hosts文件中添加上節點的與IP的映射關系(所有節點都需要修改,節點直接用SSH直接連接的時候可以直接使用主機名連接)。

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主機名即可。


免責聲明!

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



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