圖1 Hadoop結(jié)構(gòu)
Hadoop采用Master/Slave結(jié)構(gòu)(如圖1),會有一臺Mas.ter,主要負責(zé)NameNode的工作以及JobTracker 的工作,Job.Tracker的主要職責(zé)就是啟動、跟蹤和調(diào)度各個Slave的任務(wù)執(zhí)行。還會有多臺Slave,每一臺Slave通常具有 DataNode的功能并負責(zé)TaskTracker的工作。TaskTracker根據(jù)應(yīng)用要求來結(jié)合本地數(shù)據(jù)執(zhí)行Map任務(wù)以及Reduce任務(wù)。
Windows下使用Hadoop實例的研究
2.1 Windows下使用Hadoop的環(huán)境配置:
(1)安裝Hadoop前,首先需要安裝Cygwin
Cygwin是一個在Windows平臺上運行的Unix模擬環(huán)境,提供了shel1支持。安裝中需要選中Net category中的openssh。如圖2所示。
圖2 下載Cygwin安裝包
(2)配置Windows系統(tǒng)變量
新建系統(tǒng)變量CYGWIN.變量值為ntsec tty編輯系統(tǒng)變量里的Path變量.加入C:eygwinin
(3)安裝Java,即安裝idk,配置JAVA環(huán)境變量。
2.2 單機模式
(1)啟動Cygwin,解壓縮Hadoop安裝包,例如Hapoop安裝包位于e:下,則解壓命令為$tar—zxvf/cygdrive/e/hadoop一0.19.2.tar.gz。
解壓默認目錄在C:cygwinhomeuser文件夾下。
(2)編輯C:cygwinhomeAdministrato ad0op-0.19.2conf里的hadoop-env.sh,將JAVA_HOME變量設(shè)置成JDK安裝目錄,如果路徑中有空格,需要把Program Files改成Progra~1。
圖3
(3)配置完后即可運行WordCount實例。
在C:cygwiI ome dministratorhadoop-0.19.2下創(chuàng)建一個輸入目錄input.新建2個本文文件:
txt1.txt:yangshenyuan hello world hello hadooop
txt2.txt:yangshenyuan bye hadoop
然后運行實例,并將結(jié)果輸出到output目錄下:
$bin/hadoop jar hadoop-0.1 9.2-examples.jar wordeount inputoutput
2.3 偽分布模式
圖4
(2)安裝配置SSH
啟動eygwin,執(zhí)行命令:$ssh-host—eonfig。
當(dāng)詢問“Should privilege separation be used”時.輸入no;當(dāng)詢問”Do you want to install sshd as a service?”選yes;當(dāng)提示“Enterthe valHe of CYGWIN forthe daemon:[ntsee]”時,選擇ntsec。
提示sshd服務(wù)已經(jīng)在本地系統(tǒng)安裝完畢。輸入命令$net startsshd,啟動SSH,或者在Windows服務(wù)項里啟動CYGWIN sshd。
圖片說明
然后執(zhí)行$ssh—keygen來生成密鑰對.然后一直回車鍵確定。這樣會把生產(chǎn)的密鑰對保存在.ssh目錄下。使用命令將RSA公鑰加入到公鑰授權(quán)文件authorized_ keys中:
訪問http://grid1:50070可以查看NameNote以及整個分布式文件系統(tǒng)的狀態(tài).訪問http://gridl:50060可以查看TaskTraeker的運行狀態(tài)。
運行完數(shù)據(jù)處理.查看結(jié)果和關(guān)閉Hadoop的操作和偽分布模式相同。
3 結(jié)束語
雖然Hadoop支持Windows,但官網(wǎng)上同時聲明Hadoop尚未在Windows下嚴格測試,建議只作為開發(fā)平臺。
而且,格式化Hadoop文件系統(tǒng)是Hadoop啟動的第一步,每次格式化前,要清空$HADOOP_HOME mp目錄下的所有文件.因為Hadoop格式化時會重新建立NameNoteID.而tmp里還包含上次格式化留下的信息。格式化雖然清空了NameNote的數(shù)據(jù),但是保留了 DateNote的數(shù)據(jù),這樣會導(dǎo)致啟動失敗。
另外,在{HADOOP_HOME}logs目錄下,NameNode、DataNode、Secondary NameNode、JobTracker、Tasktracker各有一個日志文件,當(dāng)出現(xiàn)故障時,分析這些文件也許會有幫助。