hadoop學習之hadoop集羣功能簡單測試驗證

注:本文的主要目的是爲了記錄自己的學習過程,也方便與大家做交流。轉載請註明來自:

http://blog.csdn.net/ab198604

 

 

        前幾天對hadoop分佈式集羣的安裝過程進行了總結,對hadoop的集羣搭建只是學習hadoop中的艱難的一步,後面還需要學習更多的知識,不知道自己能不能堅持下去,不知道後面還會遇到多少困難,不過,我想,只要努力堅持下去,困難總是能夠解決的。這次主要總結對hadoop集羣測試相關的內容,對每個程序員而言,實踐是最好的老師,這個過程就好比初學編程時,學了很多理論知識,表面上知道是那麼一回事,一旦實踐起來,就手忙腳亂了,如果不實踐總覺得欠缺了什麼,下面來測試一下對前幾天安裝好的hadoop集羣,看看它到底好不好使?

        這次測試主要分兩步,hdfs和map-reduce,看這兩個部分的功能是否正常:

        一驗證hadoop的hdfs文件系統功能是否正常

        但是,應該如何驗證呢?我們知道,一個文件系統是用於處理文件相關的系統,包括文件的複製,刪除,查看等,如果說它有這些功能,那就表示文件系統是正常的。但是在我面前還是有一個問題,目前安裝好的hadoop集羣環境,它的hdfs文件系統上應該是空的,首先得給它加點料才行,換句話說,從linux角度看,就是如何從linux的文件系統將文件拷貝至hadoop的hdfs中,這顯然是最基本的操作。其實這些問題,hadoop已經幫我們想好了,這裏,我們先把料準備好,也就是要上傳到hadoop的hdfs系統上的內容,過程如下:

       

        在這裏,先建立兩個普通的文件test1.txt和test2.txt,裏面編寫了幾個單詞。將這兩個文件存放在linux的input目錄下。緊接着,需要以某種方式將這兩個文件上傳至hdfs文件系統中,這個過程主要靠以下命令完成:

       

        hadoop:爲程序名稱

        dfs: 程序帶的一個參數,這個參數主要表示要操作的是dfs文件系統

        -put: 程序帶的一個參數,這個參數表示要將“上傳”這個動作

        ./: 程序帶的一個參數,這個參數表示上傳的源文件路徑,在本例中,表示要將input目錄下的文件上傳,所以爲./

        in: 這個參數表示上傳文件的目的地址(路徑), 此時上傳至hdfs的主目錄下的in目錄中

 

        第二條指令爲顯示hdfs文件系統中in目錄下的文件內容。這些操作和linux有點類似,區別在於,hadoop系統將linux系統中的shell命令操作作爲hdfs文件系統的參數來執行操作,我認爲這是一個好的思路,至少可以讓熟悉linux的朋友對hadoop感覺比較友好。通過第二條命令的顯示,可以看出,我們已經成功地將兩個文件test1.txt和test2.txt上傳了,也成功在hadoop的hdfs文件系統中顯示in目錄下的文件操作。

        但是還是不夠,我得試着看看能否在hdfs中實現文件的複製功能,如下:

       

        上述命令將test1.txt文件生成一個拷貝,名稱爲test1.txt.bak,通過看hdfs系統中的in目錄,可以看到這步操作是成功的。那麼,在hdfs文件系統中如何刪除一個文件呢?其實也很簡單,如下圖:

       

        可以看到,前面文件的拷貝test1.txt.bak已經被成功刪除了。竟然我們可以將文件上傳到hadoop的文件系統中,那也應該可以將hadoop中的hdfs中的文件給下載下來,這種實現也很簡單,與上傳類似,只要將參數-put,改爲-get即可,如下圖:

       

       上述命令中,先創建一個空目錄,名爲dir_from_hdfs,然後從hdfs中下載剛上傳的兩文件,並將其成功下載至dir_from_hdfs中。

        到這裏,我們簡單地總結一下前面的操作:

        1 成功將linux文件系統中的文件拷貝至hdfs文件系統中的某一個路徑下: hadoop dfs -put  linux源文件路徑   hadoop的hdfs文件路徑

        2 成功將hdfs文件系統中的文件拷貝至linux文件系統中的某一個路徑下: hadoop dfs -get  hadoop的hdfs文件路徑 linux源文件路徑  

        3 知道如何顯示hdfs文件系統中的文件: hadoop dfs -ls hdfs的文件路徑

        4 知道如何在hdfs文件系統製作文件的副本: hadoop dfs -cp 原文件  目標文件

        5 知道如何在hdfs文件系統中刪除某一個文件: hadoop dfs -rm 要被刪除的目標文件

        6 如果要刪除hdfs上的文件目錄呢?這裏不再展示,直接命令:hadoop dfs -rmr hdfs系統上的文件目錄名

 

        通過以上步驟的實踐,已經可以證明前次安裝的hadoop集羣中的hdfs文件系統是能正常工作的。

         二驗證hadoop的map-reduce功能是否正常

        hadoop的hdfs實現文件的管理操作,map-reduce主要實現作業的處理。如何來驗證map-reduce的功能正常與否呢?原理其實很簡單,可以利用hadoop自帶的一個測試用例,我們輸入一個作業,然後執行map-reduce程序,讓它去處理操作作業,然後查看操作的結果是否正確,如果正確就可以表示map-reduce功能是正常的。首先,我們在hadoop上執行一個map-reduce程序(主要是實現對test1.txt和test2.txt文件中出現的單詞進行計數):

       

        對上圖中的命令作一個簡單的解釋,如下:

        hadoop     jar         ../hadoo/hadoop-0.20.2-examples.jar          wordcount                        in               out

        程序名    java程序          java包                                                java包中的wordcount函數   輸入路徑   輸出路徑 

        實際上以上操作可以看成給hadoop集羣輸入一些材料,讓其處理,輸入的條件有兩個(這裏應該指的是文件:test1.txt和test2.txt),然後map-reduce分配至各個結點進行作業的處理工作。如果不出現一些警告或錯誤就表示執行成功了。

        執行完程序後再次查看hdfs文件系統:

       

        可以看出,hdfs文件系統上多出一個out目錄,這是執行map-reduce程序後輸出結果的存放目錄。查看一下out目錄下有哪些內容:

         

       如上圖所示,out目錄中主要有兩項內容,其中一個是目錄,主要存放一些過程的日誌信息,另一個是文件,用於存放map-reduce的執行結果。

       下面查看一下map-reduce執行的結果:

       

        通過查看文件內容,我們已經看到了程序的輸出結果,是正確的。因此這也就證明了map-reduce的功能是正常的。

 

        以上是通過hadoop的hdfs文件系統來查看文件數據,這是很自然的事,但是如果從linux文件系統的角度來查看hadoop中hdfs上的文件數據時,是怎樣的呢?如下圖:

       

        由於在hdfs文件系統中,數據是存放在datanode中,因此應該從slave結點中查看。由上圖可以看出,hdfs系統上的文件如果從linux角度上來看,主要是一些元數據和一些數據項,這兩者才構成一個完整的文件,也就是說在linux角度查看hdfs文件的數據內容時,是一堆亂七八糟的東西,是沒有任何意義的。

        最後,提醒下自己,查看hadoop的hdfs情況及集羣namenode情況也可以在web網站中查看,在安裝集羣中顯示的那兩個網站,這個主要是從視圖上方便查看。

       http://192.168.1.100:50030

       http://192.168.1.100:50070

 

        補充:

        1通過命令查看hadoop中的hdfs的基本統計信息操作:

      

      2 如何進入和退出hadoop的安全模式

       

      

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章