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