天天看點

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

學習更多,請通路系列文章:

部署環境:

os:redhat 5.5 enterprise

jdk:jdk1.6.0_32

hadoop:hadoop-0.20.2

vmware:7.0

節點安排及網絡拓撲:

節點類型      節點ip      節點hostname

master節點     192.168.40.5  master

slave節點      192.168.40.5  master(此時,master既是master節點,也是slave節點)

          192.168.40.6  salve1

          192.168.40.7  slave2

secondaryname節點192.168.40.5  master(此時,master既是master節點,也是slave節點,也是secondarynamenode)

配置步驟:

一、網絡配置

先用vmware安裝三台虛拟機(可以先安裝一台,然後clone兩台),按照節點安排及網絡拓撲配置網絡,先配置master節點的網絡:

② 修改主機名:vi /etc/hosts(解析ip要用),添加

192.168.40.5 master

192.168.40.6 slave1

192.168.40.7 slave2

③ 按照此過程及相同資料(除了ip位址不同)對三台虛拟機進行配置

二、 安裝jdk

hadoop 是用java開發的,hadoop的編譯及mapreduce的運作都需要使用jdk,是以jdk是必須安裝的

② 在使用者根目錄下,建立bin檔案夾:mkdir ~/bin(也可放在其他處,個人習慣而已)

③ 改變執行權限:chmod u+x jdk-6u26-linux-i586.bin

④ 執行檔案:sudo -s ./jdk-6u26-linux-i586.bin,一路确定

⑤ 配置環境變量:vi ~/.bash_profile,添加:

export java_home=/root/bin/jdk1.6.0_32

export path=$path:$java_home/bin

⑥ 使profile檔案生效:source ~/.bash_profile

⑦ 驗證是否配置成功:which java

[root@master ~]# which java

/root/bin/jdk1.6.0_32/bin/java 配置生效。也可輸入java -version, java, javac進一步确定

⑧ 分别相同配置另外兩台主機

<jdk installation end>

三、建立ssh互信

hadoop 需要通過ssh互信來啟動slave裡表中各個主機的守護程序,是以ssh是必須安裝的(redhat 5.5 enterprise 以預設安裝)。但是是否建立ssh互信(即無密碼登陸)并不是必須的,但是如果不配置,每次啟動hadoop,都需要輸入密碼以便登入到每台機器的datanode上,而一般的hadoop叢集動辄數百或數千台機器,是以一般來說都會配置ssh互信。

① 生成密鑰并配置ssh無密碼登陸主機(在master主機)

ssh -keygen -t dsa -p '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

② 将authorized_keys檔案拷貝到兩台slave主機

scp authorized_keys slave1:~/.ssh/

scp authorized_keys slave2:~/.ssh/

③ 檢查是否可以從master無密碼登陸slave機

ssh slave1(在master主機輸入) 登陸成功則配置成功,exit退出slave1傳回master

四、配置hadoop

② 放到~/bin下解壓: tar -xzvf hadoop-0.20.2.tar.gz

③ 解壓後進入:~/bin/hadoop-0.20.2/conf/,修改配置檔案:

修改hadoop-env.sh:

hadoop-env.sh裡面有這一行,預設是被注釋的,隻需要把注釋去掉,并且把java_home 改成你的java安裝目錄即可

修改core-site.xml

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

注釋一:hadoop分布式檔案系統檔案存放位置都是基于hadoop.tmp.dir目錄的,namenode的名字空間存放地方就是 ${hadoop.tmp.dir}/dfs/name, datanode資料塊的存放地方就是 ${hadoop.tmp.dir}/dfs/data,是以設定好hadoop.tmp.dir目錄後,其他的重要目錄都是在這個目錄下面,這是一個根目錄。

注釋二:fs.default.name,設定namenode所在主機,端口号是9000

注釋三:core-site.xml 對應有一個core-default.xml, hdfs-site.xml對應有一個hdfs-default.xml,mapred-site.xml對應有一個mapred-default.xml。這三個defalult檔案裡面都有一些預設配置,現在我們修改這三個site檔案,目的就覆寫default裡面的一些配置

修改hdfs-site.xml

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

dfs.replication,設定資料塊的複制次數,預設是3,如果slave節點數少于3,則寫成相應的1或者2

修改mapred-site.xml

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

mapred.job.tracker,設定jobtracker所在機器,端口号9001

修改masters

雖然masters内寫的是master,但是個人感覺,這個并不是指定master節點,而是配置secondarynamenode

修改slaves

配置了叢集中所有slave節點

④ 添加hadoop環境變量,并 source ~/.bash_profile使之生效

⑤ 将已經配置好的hadoop-0.20.2,分别拷貝到另外兩台主機,并做相同配置

⑥ 此時,hadoop的叢集配置已經完成,輸入hadoop,則可看到hadoop相關的操作

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

⑦ 此時,首先格式化hadoop

在指令行裡執行,hadoop namenode -format

⑧ 啟動hadoop 

在指令行裡執行,start-all.sh,或者執行start-dfs.sh,再執行start-mapred.sh

⑨ 輸入jps,檢視啟動的服務程序

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

如上顯示,則說明相應的服務程序都啟動成功了。

圈10(額,像①一樣的圈出不來了(⊙o⊙)) 檢視hdfs分布式檔案系統的 檔案目錄結構

此時發現為空,因為确實什麼也沒有,運作一下指令,則可建立一個檔案夾:

圈11 運作hadoop 類似hello world的程式

本來,都是以word count來運作的,但是還得建檔案夾之類的,有一個更簡單的,就是example中的計算π值的程式,我們來計算一下,進入hadoop目錄,運作如下:

Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解
Hadoop 三台主機 叢集搭建 詳解(測試) Hadoop 三台主機 叢集搭建 詳解

計算pi值為3.5,還算靠近,至于輸出log日志,就不介紹了,以後學的稍微深入,可多做了解。

hadoop 三節點叢集的配置就介紹到這裡,接下來,會介紹一下如何在windows中遠端連接配接hadoop,并配置eclipse來進行mapreduce的開發和調試。