分散式檔案系統HDFS,大資料儲存實戰(一)

王明輝發表於2019-02-18

 

本文進行了以下工作:

  1. OS中建立了兩個檔案,檔案中儲存了幾組單詞。
  2. 把這兩個檔案匯入了hadoop自己的檔案系統。
  3. 介紹刪除已匯入hadoop的檔案和目錄的方法,以便萬一發生錯誤時使用。
  4. 使用列表命令檢視匯入的檔案和新建的目錄。
  5. 呼叫hadoop自帶的示例jar包hadoop-0.20.2-example.jar中的程式wordcount,輸出結果,以測試本hadoop系統是否可以正常工作。
  6. 在OS中檢視hadoop所產生的檔案。
  7. 在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後完成重新啟動後,就能看到新的資料目錄。

相關文章