天天看點

HDFS指令行工具

1. hadoop fs 幫助資訊

hadoop fs      

使用help選項可以獲得某個具體指令的詳細說明:

hadoop fs -help ls      

2. 列出HDFS檔案和目錄

hadoop fs -ls /user/      

3. 複制檔案到HDFS和從HDFS複制檔案

  在很多方面,HDFS較之于本地0S檔案系統更像一個遠端檔案系統。對HDFS檔案的複制操作更像SCP或FTP操作,而非NFS上的檔案系統操作。檔案上傳使用-put或-copyFromLocal,檔案下載下傳使用-get或-copytoLocal。為了友善-copyFromLocal和-copytoLocal分别用來從本地複制檔案到HDFS或将HDFS檔案複制到本地,然後自動删除源檔案。

  複制檔案到hdfs

hadoop fs -put /etc/passwd /user/      

  從hdfs複制檔案

hadoop fs -get /user/passwd /usr/local      

4. 修改HDFS檔案的複制因子

  HDFS的另一個特别之處在于能夠設定檔案的複制因子。用-setrep指令,加上複制因子和可選标志(-R)表示要遞歸執行該操作。

hadoop fs -setrep 5 -R /user/tmp/      

  注:HDFS會主動跟蹤并管理可用資料塊副本的數量,當副本數目低于配置的複制因子時,檔案系統會自動從剩下的副本建立一個新的副本。

5. 設定目錄磁盤空間的限額

//size是磁盤限額(用位元組表示),path就是配額作用的目标目錄
hadoop dfsadmin -setSpaceQuota size path      

6. 查詢檔案夾的磁盤空間限額和檔案數目限額

hadoop fs -count -q path      

  結果的第一列顯示的是檔案數的限額,第二列是允許添加的檔案數,第三列和第四列分别是磁盤空間的限額和剩餘的可用空間(機關是位元組)。

  注:隻有當磁盤空間配額大小為磁盤塊大小的整數倍時,才有意義。

7. 解除檔案夾磁盤空間配額限制的指令

hadoop dfsadmin -clrSpaceQuota path      

 8. 設定檔案數目配額

hadoop dfsadmin -setQuota number path      

9. 解除檔案數目配額

hadoop dfsadmin -clrQuota path      

 10. 添加一個DataNode

  叢集擴容需要添加新DataNode,通常是在需要增加存儲的情況下,雖然有時也是為了增加IO總帶寬或減小單台機器失效的影響。在運作中的HDFS叢集上增加新的DataNode是一個線上操作或熱操作。對于要使用HDFS主機及功能的使用者,新主機的IP位址必須添加到include檔案中,但主機清單可以動态更新而無需重新啟動NameNode。

1. 把DataNode的IP位址加入dfs.hosts參數指定的檔案中。每個IP位址占用一行。

2. 以HDFS超級使用者或有類似權限的使用者執行指令行hadoop dfsadmin -refreshNodes。

3. 如果使用機架感覺機制,需要為新加入主機更新相關的機架資訊。

4. 啟動DataNode程序。

5. 通過NameNode的Web界面或指令hadoop dfsadmin -report的輸出來确定新節點是否已連接配接。

  僅當使用包含HDFS主機的功能時需要執行步驟1和2。

11. 解除安裝DataNode

  DataNode可能被解除安裝以便把它從叢集中安全移除,同時還要保持主機上所有塊的複制因子。這個過程可能很漫長,取決于被解除安裝主機上的資料量、叢集工作數以及網絡速度等因素。因為解除安裝的時間太長,在作業系統重新開機或配置變化引發的重新開機所導緻的短暫停機狀态下不适合做解除安裝節點的操作。如果想保證所有資料塊安全,就需要使用安全解除安裝功能。

1. 把DataNode的IP位址添加到dfs.hosts.exclude參數指定的檔案中。每個IP位址占用一行。

2. 以HDFS超級使用者或擁有類似權限的使用者執行hadoop dfsadmin -refreshNodes。

3. 監控NameNode的Web界面確定解除安裝正在進行。有時更新會滞後幾秒。

4. 因為DataNode上的資料較多,解除安裝有時會持續數小時甚至幾天。解除安裝完成時,NameNode界面會把DataNode顯示成已解除安裝。

5. 停止DataNode程序。

6. 如果不打算把機器放回叢集,就需要在HDFS的include和exclude檔案中去除DataNode,同時更新機架拓撲資料庫。

7. 執行hadoop dfsadmin -refreshNodes讓NameNode進行節點更新。

12. 在HDFS中建立一個新檔案夾

hadoop fs -mkdir /user/weblogs      

13. 列出HDFS上weblog_entries.txt檔案資訊

hadoop fs -ls /user/weblogs/weblog_entries.txt      

繼續閱讀