【文章內(nèi)容簡介】
stem HDFSFile = (conf)。 Path srcPath = new Path(“/user/userFile/”)。 FileStatus fileStatus = (srcPath)。 long lModifyTime = ()。(6) () 查看目錄下所有文件先根據(jù)指定的全路徑獲取一個FileStatus對象,然后再通過遍歷該對象來實現(xiàn)對目錄下文件的遍歷。下面的示例在遍歷的同時打印出其下的所有文件名。示例: Configuration conf = new Configuration()。 FileSystem HDFSFile = (conf)。 Path srcPath = new Path(“/user/userFile/”)。 FileStatus fileStatus = (srcPath)。 For(int i=0。 i。++i) { (fileStatus[i].getPath().toString())。 } ()。 Map/ReduceMapReduce被InfoWord評為2009年新興技術(shù)的領(lǐng)頭軍。MapReduce是具有超級計算能力的利器,:Map和Reduce是它的主要思想,編程語言的函數(shù)式是他的起源。 Map/Reduce原理圖Map承擔(dān)著打散用戶提供的數(shù)據(jù)的工作,Reduce承擔(dān)數(shù)據(jù)聚集數(shù)據(jù)的工作,用戶可以通過實現(xiàn)map和reduce兩個接口來實現(xiàn)大規(guī)模數(shù)據(jù)(TB級)的計算,常見的應(yīng)用有日志分析和數(shù)據(jù)挖掘等數(shù)據(jù)分析應(yīng)用。另外,還可用于像天氣預(yù)報的這樣超級大的科學(xué)數(shù)據(jù)計算。Hadoop MapReduce的同樣是采用Master/Slave的結(jié)構(gòu)來實現(xiàn)的。其中JobTracker為Master,而TaskTracker為Slave。Job是用戶提交的計算的稱謂,每一個Job會被系統(tǒng)自動分成若干個Tasks。JobTracker則負責(zé)Job和Tasks的優(yōu)化調(diào)度,而執(zhí)行Tasks的責(zé)任交給TaskTracker負責(zé)。MapReduce是一個編程模型,在Hadoop云平臺上用來處理大數(shù)據(jù)集的相關(guān)實現(xiàn)。之所以這種變成模型能夠在普通機器上自動并且并行的運作,主要是因為他能將用戶制定的map()函數(shù)最終產(chǎn)生很多具有相同中間Key的中間value且能被一個reduce函數(shù)所合并。:圖 MapReduce處理流程從圖中可以看出,源源不斷是輸入數(shù)據(jù)在MapReduce模式下被拆分成很多的Map任務(wù),而Map任務(wù)在Hadoop框架內(nèi)進行并行的處理,而若干個Map任務(wù)在Hadoop框架處理后被一個Reduce所合并匯總,最終輸出給用戶。Hadoop Reduce 作業(yè)的總體結(jié)構(gòu)中包括:JobTracker,TaskTracker、JobClient、JobInProgress、TaskInProgress、MapTask和ReduceTask等,而Job的創(chuàng)建及執(zhí)行過程比較復(fù)雜,這里不做大篇幅敘述。第 57 頁 共 57 頁第三章 Hadoop與Eclipse開發(fā)環(huán)境的搭建 概要分析環(huán)境搭建顧名思義,對于“云存儲系統(tǒng)”那首先就必須要有一個云平臺。然后再通過其他軟件開發(fā)環(huán)境編寫程序來實現(xiàn)對該云平臺上的操作。在眾多的云平臺中Hadoop是開源中的典范。我這里選擇Hadoop,用Hadoop在Windows上搭建一個云服務(wù)器。這里就設(shè)計到一個問題,需要一個東西來將Windows環(huán)境模擬出Unix系統(tǒng)。Cygwin是在Windows上模擬Unix系統(tǒng)的實現(xiàn)終端。而Hadoop本身帶有供二次開發(fā)應(yīng)用程序所用的插件,插件中封裝了很多API供應(yīng)用程序調(diào)用,進而實現(xiàn)對云服務(wù)器上的操作。該插件可以配置在eclipse上,因此很方便開發(fā)。為了實現(xiàn)Windows上Hadoop平臺的搭建,我們需要安裝JDK、模擬Unix環(huán)境的Cygwin、然后配置好環(huán)境變量,實現(xiàn)無密碼SSH服務(wù)登陸,之后安裝配置Hadoop。這一整個流程將在其后章節(jié)中詳細敘述(雖然只是一個云平臺的搭建,但我個人認為這個云平臺的搭建是整個整個論文的一個致命關(guān)鍵點,因此講做詳細的講解)。另外,只有將插件安裝到eclipse環(huán)境下才能在其上調(diào)用Hadoop云平臺上訪問HDFS的API,這樣為下一步軟件開發(fā)與云平臺建立了一個可靠的橋梁。具體的做法也將在其后的章節(jié)中詳細描述。 Windows上Hadoop云平臺搭建 下載JDK安裝包。;具體的安裝步驟這里不做詳解,比較簡單。但是這里雖然只是安裝一個Java開發(fā)環(huán)境,但是還是有個地方值得一提。就是JDK的安裝路徑。對于64位操作系統(tǒng),JDK默認安裝位置是在“C:\Program Files (x86)\Java\...”目錄下,此目錄中帶有“()”,里面修改的時JAVA_HOME路徑,而這一路徑中若存在“()”或者空格之類的將直接導(dǎo)致無法尋找到該路徑,進而給接下來云平臺搭建帶來麻煩,所以安裝時應(yīng)該必開這么帶括號等這類非數(shù)字、字母、下 劃線的路徑。這里我選擇的安裝路徑為“C:”,JDK和JRE的路徑分別為:C:\Java\:\Java\jre8。Cygwin的作用就是在Windows平臺上模擬出Unix環(huán)境。步驟如下;登錄網(wǎng)站: (32位操作系統(tǒng)) 或者 (64位操作系統(tǒng))。通過查看“計算機”〉“屬性”來查看計算機操作系統(tǒng)。(只是一個引導(dǎo)安裝文件,而非安裝文件),; Cygwin安裝開始下一步, Cygwin安裝方式選擇其中,第一項“Install from Internet”表示從網(wǎng)絡(luò)上找到安裝鏡像后自動安裝。一般網(wǎng)絡(luò)條件好的可以先擇此項,但此安裝不會保存安裝文件,因此若下次需再次安裝時也必須要有網(wǎng)絡(luò);第二項“Download Without Installing”表示下載安裝鏡像,但不安裝。這里下載有個好處就是,在以后沒有網(wǎng)絡(luò)的情況下也可以自由安裝;第三項“Install From Local Directory”表示安裝已下載到本地目錄下的安裝文件。建議先選擇“Download Without Installing”之后再通過“Install From Local Directory”來安裝,這樣就方便于日后無網(wǎng)絡(luò)的時候安裝。值得注意的是,在下載的時候一定要保證選中了以下幾個包:選擇“Install From Local Directory”,下一步,: Cygwin安裝路徑和使用者選擇Root Directory選擇Cygwin的安裝路徑。我這離為D:\Program Files (x86)\cygwin64;Install for “All Users”。下一步,: Cygwin安裝選擇安裝包路徑這里L(fēng)ocal Package Directory選擇的是之前下載的安裝文件在本地的位置(中間可能會出現(xiàn)版本問題的提示,如有出現(xiàn),則只需點擊“確定”即可)。下一步。 Cygwin安裝包選擇這里務(wù)必要保證一下四個包已選中Base〉sedEditors〉vimDevel〉subversionNet〉OpenSSH注:包的狀態(tài)“Reinstall”為重新安裝;“Keep”為安裝;“Uninstall”為不安裝。點擊出現(xiàn)版本號即可。: Cygwin安裝選擇包接著可以一路“下一步”下去,直到安裝完成。 Cygwin安裝完成 配置Windows系統(tǒng)環(huán)境變量打開系統(tǒng)環(huán)境變量設(shè)置。右鍵“我的電腦”/“計算機”〉系統(tǒng)屬性〉高級/高級系統(tǒng)設(shè)置〉環(huán)境變量;。 Windows環(huán)境變量添加環(huán)境變量JAVA_HOME;“系統(tǒng)變量(S)”〉“新建”,并且在“變量名(N)”處輸入JAVA_HOME,在“變量值(V)”處輸入在第一步安裝JDK時JDK的所在路徑。我這里為C:\Java\;。 Windows環(huán)境變量JAVE_HOME配置添加環(huán)境變量CLASSPATH;“系統(tǒng)變量(S)”〉“新建”,并且在“變量名(N)”處輸入CLASSPATH在“變量值(V)”處輸入:“.。%JAVA_HOME%\lib。%JAVA_HOME%\lib\”注意最前面的“.?!?。, Windows環(huán)境變量CLASSPATH配置修改PATH目錄“系統(tǒng)變量(S)”中選中“PATH”后點“編輯”。首先是添加JDK的路徑,以分號結(jié)束;我這里為:C:\Java\\bin;C:\Java\\jre\bin;添加JRE的路徑;我這里為:C:\Java\jre8\bin;然后是Cygwin的bin路徑;我這里為:D:\Program Files (x86)\cygwin64\bin;最后是Cygwin usr的bin或sbin路徑。我這里為:D:\Program Files (x86)\cygwin64\usr\sbin;完整后為:C:\Java\jre8\bin。C:\Java\\bin。D:\ProgramFiles(x86)\cygwin64\bin。D:\Program Files (x86)\cygwin64\usr\sbin。將這些添加到PATH的最前面。: Windows環(huán)境變量PATH配置新建系統(tǒng)變量CYGWIN“系統(tǒng)變量(S)”〉“新建”,并且在“變量名(N)”處輸入CYGWIN在“變量值(V)”處輸入:ntsec。: Windows環(huán)境變量CYGWIN配置 安裝和配置SSHD服務(wù)安裝sshd服務(wù)啟動Cygwin(Unix環(huán)境模擬工具);, Cygwin啟動輸入指令$ sshhostconfig問題Should privilege separation be used?(yes/no)這里是有關(guān)權(quán)限隔離的抉擇,此處先擇 “no”接著下一問題“(Say “no” if it is already installed as a service)(yes/no)”選擇“yes”;: 安裝SSHD服務(wù)接著上面問題:“Enter the value of CYGWIN for the daemon:[]”,入 ntsec;接著下一問題“Do you want to use a differen name?(yes/no)”, 選擇 no ;“Create new privileged user account ‘cyg_server’?(yes/no)”, 選擇 yes;接著會出現(xiàn)“Please enter the password:”,這里不設(shè)置密碼,回 車即可(包括密碼在次的輸入)。當出現(xiàn)“Host configuration fun!”時,表示安裝完成。: SSHD服務(wù)安裝完成啟動ssh服務(wù);“我的電腦”/“計算機”〉管理〉服務(wù)和應(yīng)用程序〉服務(wù)。選擇CYGWIN ssh,并且啟動。: 啟動SSHD服務(wù)注意:在啟動服務(wù)的時候可能會彈出“本地計算機上的cygwin sshd服務(wù)啟動后停止.....”的錯誤。這種情況很可能是由于權(quán)限問題所導(dǎo)致,具體解決方法請直接百度“本地計算機上的cygwin sshd服務(wù)啟動后停止的問題解決”便可知曉。配置sshd服務(wù)無密碼登陸。生成密鑰對。打開Cygwin輸入 sshkeygen中間會有三次回車(如果不出錯誤的話)。直接回車就可以。 生成SSHD服務(wù)密鑰對將生成的密鑰對中的公鑰加入到公鑰授權(quán)文件中。:cd .ssh/。:cp authorized_keys;。 配置公鑰授權(quán)文件退出Cygwin。sshd的登錄打開Cygwin;輸入指令:ssh localhost遇到 Are you sure you want to continue connecting (yes/no)? 選擇 yes??梢酝ㄟ^who指令 SSHD服務(wù)登陸成功 配置Hadoop安裝包下載Hadoop安裝包并解壓。注意自己解壓后所存放的目錄,路徑最好是純英文的,這樣更方便。我這里為“D:\”。修改配置文件(hadoop解壓文件內(nèi)的conf目錄,我這里為D:\\conf);:\\conf下的文件 “”用記事本打開。找到“export JAVA_HOME=/usr/lib/”將JAVA_HOME之后的修改成JDK的安裝目錄,并且在目錄前加入/cygdrive/,即修改成“export JAVA_HOME=/cygdrive/C/Java/”。, 找到D:\\src\core 下的文件 “”,并將其拷貝到D:\\conf下。刪除原有文件“”,并將拷貝過來的文件“”改名“”,然后用記事本打開。搜索到節(jié)點“”。將其中value值改成“hdfs://localhost:9000”。找到D:\\src\hdfs 下的文件“”,并將其拷貝到D:\\conf下。刪除原有文件“”,并將拷貝過來的文件“”改名“”,然后用記事本打開。搜索到節(jié)點“”:將其中value值改成“1”:保存退出即可。找到D:\\src\mapred 下的文件“”,并將其拷貝到D:\\conf下