本文進行了以下工作:
- OS中建立了兩個檔案,檔案中儲存了幾組單詞。
- 把這兩個檔案匯入了hadoop自己的檔案系統。
- 介紹刪除已匯入hadoop的檔案和目錄的方法,以便萬一發生錯誤時使用。
- 使用列表命令檢視匯入的檔案和新建的目錄。
- 呼叫hadoop自帶的示例jar包hadoop-0.20.2-example.jar中的程式wordcount,輸出結果,以測試本hadoop系統是否可以正常工作。
- 在OS中檢視hadoop所產生的檔案。
- 在web頁面中檢視系統各狀態。
預備知識
和各種大型關係型資料庫(如sql server和oracle等)一樣,Hadoop有自己的檔案系統,在作業系統中只能看到檔案,用檔案工具強制開啟以後是無法理解的亂碼,只能通過Hadoop系統去管理和讀取。
所以OS的檔案系統和hadoop的檔案系統是相互獨立的,要用hadoop,需要從OS中把檔案匯入hadoop系統。
準備測試檔案
OS中hadoop目錄下新建input目錄,之所以叫input,是因為相對hadoop系統來講,這個目錄是輸入目錄。
用echo “hello world” >test1.txt的方式,建立兩個檔案,當然可以用其它任何方式建立檔案。結果如圖所示:
bin/hadoo dfs -put ../input in
-put的意思是把本地的input目錄下的檔案放到hadoop系統的in目錄下。
完成以後可用以下命令檢視:
bin/hadoop dfs -ls in/*
效果如上圖。意思是:列出in目錄下的所有目錄及檔案
如果要從hadoop中刪除一個目錄,則使用以下命令
bin/hadoop dfs -rmr 目錄名
引數dfs表示對分散式檔案系統進行操作,相應的還有jar,表示呼叫jar包中的程式。
執行java程式,對已配置完成的hadoop系統進行測試
執行bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
jar表示執行java程式,一般是一個mapreduce的作業,即提交mapreduce作業。圖中的hadoop-0.20.2是hadoop提供的示例jar包,wordcount程式在其中,in指出hadoop系統中的原始資料目錄,out是hadoop系統中的輸出資料目錄,如果不存在,則自動建立。顧名可思義,wordcount是用來統計單詞出現次數的程式。
bin/hadooop dfs -ls,表示列出根目錄的目錄列表
bin/hadooop dfs -ls out,表示列出out目錄的目錄列表
輸出後,執行結果放在了part-r-00000檔案中,日誌放在了_logs目錄
hadoop dfs -cat out/part-r-00000
是顯示part-r-00000的結果,可以看到
hadood 出現了1次,hello出現了2次,world出現了1次
在namenode上可以用localhost:50030,遠端可以用IP:50030,如http://192.168.1.8:50030
最後,再把前面提到的關於hadoop是一個獨立的檔案系統用實際資料展示一下:
可以看到meta是原始資料,不帶meta的是資料檔案。
這些檔案會儲存在資料節點(小弟機、slaves)的hdfs-site.xml檔案中的fs.data.dir所指向的目錄,如/opt/hadoop/data。修改後此值後,master呼叫bin/stop-all.sh,再呼叫bin/start-all.sh後完成重新啟動後,就能看到新的資料目錄。