Hadoop開發第6期---HDFS的shell操作


一、HDFS的shell命令簡介

我們都知道HDFS 是存取數據的分布式文件系統,那么對HDFS 的操作,就是文件系統的基本操作,比如文件的創建、修改、刪除、修改權限等,文件夾的創建、刪除、重命名等。對HDFS 的操作命令類似於lLinux 的shell 對文件的操作,如ls、mkdir、rm 等。
我們在執行HDFS的shell操作的時候,一定要確定hadoop 是正常運行的,我們可以使用使用jps 命令確保看到各個hadoop 進程。
我們可以執行命令hadoop fs,來查看HDFS的shell操作的所有命令如下。
[root@hadoop ~]# hadoop fs
Usage: java FsShell
           [-ls <path>]
           [-lsr <path>]
           [-du <path>]
           [-dus <path>]
           [-count[-q] <path>]
           [-mv <src> <dst>]
           [-cp <src> <dst>]
           [-rm [-skipTrash] <path>]
           [-rmr [-skipTrash] <path>]
           [-expunge]
           [-put <localsrc> ... <dst>]
           [-copyFromLocal <localsrc> ... <dst>]
           [-moveFromLocal <localsrc> ... <dst>]
           [-get [-ignoreCrc] [-crc] <src> <localdst>]
           [-getmerge <src> <localdst> [addnl]]
           [-cat <src>]
           [-text <src>]
           [-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
           [-moveToLocal [-crc] <src> <localdst>]
           [-mkdir <path>]
           [-setrep [-R] [-w] <rep> <path/file>]
           [-touchz <path>]
           [-test -[ezd] <path>]
           [-stat [format] <path>]
           [-tail [-f] <file>]
           [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
           [-chown [-R] [OWNER][:[GROUP]] PATH...]
           [-chgrp [-R] GROUP PATH...]
           [-help [cmd]]

二、HDFS的shell操作命令選項

選項名稱

使用格式

含義

-ls

-ls <路徑>

查看指定路徑的當前目錄結構

-lsr

-lsr <路徑>

遞歸查看指定路徑的目錄結構

-du

-du <路徑>

統計目錄下各文件大小

-dus

-dus <路徑>

匯總統計目錄下文件(夾)大小

-count

-count [-q] <路徑>

統計文件(夾)數量

-mv

-mv <源路徑> <目的路徑>

移動

-cp

-cp <源路徑> <目的路徑>

復制

-rm

-rm [-skipTrash] <路徑>

刪除文件/空白文件夾

-rmr

-rmr [-skipTrash] <路徑>

遞歸刪除

-put

-put <多個linux上的文件> <hdfs 路徑>

上傳文件

-copyFromLocal

-copyFromLocal <多個linux 上的文件> <hdfs 路徑>

從本地復制

-moveFromLocal

-moveFromLocal <多個linux 上的文件> <hdfs 路徑>

從本地移動

-getmerge

-getmerge <源路徑> <linux 路徑>

合並到本地

-cat

-cat <hdfs 路徑>

查看文件內容

-text

-text <hdfs 路徑>

查看文件內容

-copyToLocal

-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路徑] [linux 目的路徑]

復制到本地

-moveToLocal

-moveToLocal [-crc] <hdfs 源路徑> <linux目的路徑>

移動到本地

-setrep

-setrep [-R] [-w] <副本數> <路徑>

修改副本數量

-mkdir

-mkdir <hdfs 路徑>

創建空白文件夾

-touchz

-touchz <文件路徑>

創建空白文件

-stat

-stat [format] <路徑>

顯示文件統計信息

-tail

-tail [-f] <文件>

查看文件尾部信息

-chmod

-chmod [-R] <權限模式> [路徑]

修改權限

-chown

-chown [-R] [屬主][:[屬組]]路徑

修改屬主

-chgrp

-chgrp [-R] 屬組名稱 路徑

修改屬組

-help

-help -help [命令選項]

幫助

 

三、各命令選項的用法

1. ls 顯示當前目錄結構

(1) 該命令選項表示查看指定路徑的當前目錄結構,后面跟hdfs 路徑,如果下圖所示

image

我們解釋一下每一行的內容格式:

① 首字母表示文件夾(如果是“d”)還是文件(如果是“-”);
② 后面的9 位字符表示權限;
③ 后面的數字或者“-”表示副本數。如果是文件,使用數字表示副本數;文件夾沒有副本;
④ 后面的“root”表示屬主;
⑤ 后面的“supergroup”表示屬組;
⑥ 后面的“0”、“ 84927175”表示文件大小,單位是字節;
⑦ 后面的時間表示修改時間,格式是年月日時分;
⑧ 最后一項表示文件路徑。
可見根目錄下面有1個文件夾、1個文件。

(2) 如果該命令選項后面沒有路徑,那么就會訪問/user/<當前用戶>目錄。我們使用root用戶登錄,因此會訪問hdfs 的/user/root 目錄,但是如果沒有這個目錄/user/root,會提示文件不存在的錯誤如圖3.1所示,添加該目錄后再次執行該命令如圖3.2,3.3所示。

image

圖 3.1

image

圖 3.2

image

圖 3.3

2. -lsr 遞歸顯示目錄結構

該命令選項表示遞歸顯示當前路徑的目錄結構,后面跟hdfs 路徑。如下圖所示。

顯示/user 目錄下有個root 目錄,root 目錄下有文件hello

3. -du 統計目錄下各文件大小

該命令選項顯示指定路徑下的文件大小,單位是字節,如下圖所示

image

4. -dus 匯總統計目錄下文件大小

該命令選項顯示指定路徑的文件大小,單位是字節,如下圖所示

image

5. count 統計文件(夾)數量

該命令選項顯示指定路徑下的文件夾數量、文件數量、文件總大小信息,如下圖所示

image

6.  mv 移動

該命令選項表示移動hdfs 的文件到指定的hdfs 目錄中。后面跟兩個路徑,第一個表示源文件,第二個表示目的目錄。如下圖所示

image

在上圖中有三條命令,是為了體現移動前后的變化情況。

7. cp 復制

該命令選項表示復制hdfs 指定的文件到指定的hdfs 目錄中。后面跟兩個路徑,第一個是被復制的文件,第二個是目的地。如下圖所示

image

在上圖中有三條命令,是為了體現復制前后的變化情況。

8. rm 刪除文件/空白文件夾

該命令選項表示刪除指定的文件或者空目錄,如下圖所示

image

在上圖 中,前三條命令是為了體現執行前后的變化情況。第四條命令是刪除非空的“/user”目錄,操作失敗,表明不能刪除非空目錄

9.  rmr 遞歸刪除

該命令選項表示遞歸刪除指定目錄下的所有子目錄和文件,如下圖所示

image

10. put 上傳文件

該命令選項表示把linux 上的文件復制到hdfs 中,如下圖所示

image

11. copyFromLocal 從本地復制到hdfs

操作與-put 一致,不再舉例。

12. moveFromLocal 從本地移動到hdfs

該命令表示把文件從linux 上移動到hdfs 中,如下圖所示

image

13.  getmerge 合並到本地

該命令選項的含義是把hdfs 指定目錄下的所有文件內容合並到本地linux 的文件中,如下圖所示

image

14.  cat 查看文件內容

該命令選項是查看文件內容,如下圖所示

image

 15. text 查看文件內容

該命令選項可以認為作用和用法與-cat 相同,此處略。

16. mkdir 創建空白文件夾

該命令選項表示創建文件夾,后面跟的路徑是在hdfs 將要創建的文件夾,如下圖所示

image

17. setrep 設置副本數量

(1) 該命令選項是修改已保存文件的副本數量,后面跟副本數量,再跟文件路徑,如下圖所示

image

  在圖3.17 中,我們修改了文件/file1的副本數,由1 修改為2,意味着多了一個副本,HDFS 會自動執行文件的復制工作,產生新的副本。

(2) 如果最后的路徑表示文件夾,那么需要跟選項-R,表示對文件夾中的所有文件都修改副本,如下圖所示

image

在上圖中,我們對/user/root 文件夾進行的操作,使用了選項-R,那么/user/root 下的文件file2,file1 的副本數發生了改變。

(3) 還有一個選項是-w,表示等待副本操作結束才退出命令,下圖所示

image

18.  touchz 創建空白文件

該命令選項是在hdfs 中創建空白文件,如下圖 所示

 

19. stat 顯示文件的統計信息

該命令選項顯示文件的一些統計信息,如下圖所示

image

在上圖中,命令選項后面可以有格式,使用引號表示。示例中的格式“%b %n %o%r %Y”依次表示文件大小、文件名稱、塊大小、副本數、訪問時間

 20. tail 查看文件尾部內容

該命令選項顯示文件最后1K 字節的內容。一般用於查看日志。如果帶有選項-f,那么當文件內容變化時,也會自動顯示。如下圖所示

image

 21.  chmod 修改文件權限

(1) 該命令選項的使用類似於linux 的shell 中的chmod 用法,作用是修改文件的權限,如下圖所示

image3

(2) 在圖3.23中,修改了文件/emptyfile 的權限。如果加上選項-R,可以對文件夾中的所有文件修改權限,如下圖所示

image

22. chown 修改屬主

該命令選項表示修改文件的屬主,如下圖所示

image

(2) 上圖中把文件/emptyfile 的屬主由root 修改為sunddenly。也可以同時修改屬組,如下圖所示

image

在上圖中,把文件/emptyfile 的屬主和屬組都修改為itcast,如果只修改屬組,可以使用“:sunddenly”。如果帶有選項-R,意味着可以遞歸修改文件夾中的所有文件的屬主、屬組信息

23. chgrp 修改屬組

該命令的作用是修改文件的屬組,該命令相當於“chown :屬組”的用法,如下圖所示

24. help 幫助

該命令選項會顯示幫助信息,后面跟上需要查詢的命令選項即可,如下圖所示

image

在上圖中,查詢的rm 的用法


免責聲明!

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



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