學習更多,請通路系列文章:
部署環境:
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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
注釋一: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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
dfs.replication,設定資料塊的複制次數,預設是3,如果slave節點數少于3,則寫成相應的1或者2
修改mapred-site.xml
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
mapred.job.tracker,設定jobtracker所在機器,端口号9001
修改masters
雖然masters内寫的是master,但是個人感覺,這個并不是指定master節點,而是配置secondarynamenode
修改slaves
配置了叢集中所有slave節點
④ 添加hadoop環境變量,并 source ~/.bash_profile使之生效
⑤ 将已經配置好的hadoop-0.20.2,分别拷貝到另外兩台主機,并做相同配置
⑥ 此時,hadoop的叢集配置已經完成,輸入hadoop,則可看到hadoop相關的操作
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
⑦ 此時,首先格式化hadoop
在指令行裡執行,hadoop namenode -format
⑧ 啟動hadoop
在指令行裡執行,start-all.sh,或者執行start-dfs.sh,再執行start-mapred.sh
⑨ 輸入jps,檢視啟動的服務程序
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
如上顯示,則說明相應的服務程序都啟動成功了。
圈10(額,像①一樣的圈出不來了(⊙o⊙)) 檢視hdfs分布式檔案系統的 檔案目錄結構
此時發現為空,因為确實什麼也沒有,運作一下指令,則可建立一個檔案夾:
圈11 運作hadoop 類似hello world的程式
本來,都是以word count來運作的,但是還得建檔案夾之類的,有一個更簡單的,就是example中的計算π值的程式,我們來計算一下,進入hadoop目錄,運作如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiZpdmLlR2bjlHcvN2LcNXZnFWbp9CXt92YuM3ZvxmYuNmLu9Wbt92Yvw1LcpDc0RHaiojIsJye.gif)
計算pi值為3.5,還算靠近,至于輸出log日志,就不介紹了,以後學的稍微深入,可多做了解。
hadoop 三節點叢集的配置就介紹到這裡,接下來,會介紹一下如何在windows中遠端連接配接hadoop,并配置eclipse來進行mapreduce的開發和調試。