hadoop shell命令行基礎


轉自:https://blog.csdn.net/hll19950830/article/details/79810540

1. 查看hdfs根目錄下的文件:hadoop fs -ls  hdfs://master:9000/

 

可以簡寫為以下的形式:hadoop fs -ls /

 

或者這么寫:hdfs dfs -ls /

 

2. 創建文件夾:hadoop fs -mkdir /test

 

3. 在指定文件夾中創建空文件:hadoop fs -touchz /test/zs.txt

 

文件為空時 再創建一個同名的文件不會報錯 

4. 上傳本地文件到HDFS(將Linux系統下當前目錄下的a.php文件上傳到根目錄下):hadoop fs -put ./a.php /test

 

文件存在時 如果再上傳相同的文件 就會報錯

 

選項-f:如果文件存在 則再上傳相同的文件直接覆蓋之前的文件

 

5. 顯示文件內容:hadoop fs -cat /test/a.php

 

6. 從hdfs下載文件到本地:hadoop fs -get /test/a.php

 

沒有覆蓋本地文件的選項 如果本地存在相同文件 則會報錯

 

7. 將本地文件移動到hdfs中(與put功能類似 不同之處在於 moveFromLocal會刪除本地的文件 而put則不會)

hadoop fs -moveFromLocal ./b.php /test

 

8. 將hdfs中的文件移動到本地(moveToLocal與get功能類似 不同之處在於 moveToLocal會刪除hdfs中的文件 而get則不會)

9. 將本地文件拷貝到hdfs中(copyFromLocal與put功能相同):hadoop fs -copyFromLocal ./c.php /test

 

10. 將hdfs中的文件拷貝到到本地(copyToLocal與get功能相同)

11. 將本地的文件追加到hdfs中已經存在的文件末尾:hdfs fs -appendToFile ./test.php /test/a.php

 

12. 查看文件末尾:hadoop fs -tail /test/a.php

 

13. 以字符形式顯示文件內容:hadoop fs -text /test/a.php(功能類似於cat 區別在於如果不是字符文件 則會顯示亂碼)

 

14. 修改文件權限:hadoop fs -chmod 777 /test/a.php

 

15. 修改文件用戶和組:hadoop fs -chown 777 /test/a.php(hadoop沒有用戶的概念 它是一種弱的權限控制 並不會檢驗用戶是否存在 即使該用戶和組不存在也可以設置成功 你指定它的用戶和組是誰就是誰)

 

16. 將文件從hdfs的一個路徑拷貝到另外一個路徑:hadoop fs -cp /test/a.php /

 

拷貝相同的文件到同一個目錄中會報錯

 

-f參數會直接忽視錯誤 不管文件是否存在 強行將文件拷貝過去

 

17. 將文件從hdfs的一個路徑拷貝到另外一個路徑:hadoop fs -mv /test/c.php /

 

18. 將多個文件從hdfs上合並下載到本地:hadoop fs -getmerge /test/*.php ./merge.php

 

這是hadoop的bug 參數中有*時 它會在本地查找 而不是在hdfs中查找 要想避免這種問題 就要把地址寫全

 

19. 刪除文件:hadoop fs -rm  /test/a.php

-r參數表示遞歸刪除某個目錄下的所有文件和子目錄:hadoop fs -rm -r  /test

20. 刪除空目錄:hadoop fs -rmdir  /test/a.php(這個命令無法刪除非空目錄)

21. 統計文件系統的可用空間信息:hadoop fs -df

 

hadoop fs -df -h /

 

22. 統計文件及目錄的大小信息:hadoop -fs du /

 

-s 參數表示顯示大小信息 -h參數表示帶單位:hadoop -fs du -s  -h /

 

23. 統計一個指定目錄下的文件節點數目:hadoop fs  -count /

 

24. 設置hdfs中文件副本數目:hadoop fs -setrep 2 /a.php(文件夾只是一種描述文件的特殊文件 是文件系統的元數據 它本身並不存儲數據 因此在hdfs中副本數為0)

a.php文件 在設置之前的副本數為3

 

a.php文件 在設置之后的副本數為2

 

 

需要注意的是:這里設置的副本數只是在NameNode的元數據中記錄下來了 如果設置的副本數小於當前服務器的節點數 則集群中該文件的副本數就是設置的這個副本數 因為它會迅速復制出副本 而如果設置的副本數大於當前服務器的節點數 集群中該文件的副本數就等於節點數 因為當前集群沒有能力保證文件副本數達到設置的副本數 只有當集群中增加新的機器時 才會復制剩余的副本
---------------------
作者:溫文爾雅的流氓
來源:CSDN
原文:https://blog.csdn.net/hll19950830/article/details/79810540
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM