1. 程式人生 > >Hadoop框架之HDFS的shell操作

Hadoop框架之HDFS的shell操作

技術分享 登錄 自動 訪問hdfs tro 分布式文件系 屬組 3-9 統計文件

既然HDFS是存取數據的分布式文件系統,那麽對HDFS的操作,就是文件系統的基本操作,比如文件的創建、修改、刪除、修改權限等,文件夾的創建、刪除、重命名等。對HDFS的操作命令類似於Linux的shell對文件的操作,如ls、mkdir、rm等。

我們執行以下操作的時候,一定要確定hadoop是正常運行的,使用jps命令確保看到各個hadoop進程。

我們執行命令hadoop fs,如圖4-1所示。

技術分享

圖4-1

圖中顯示了很多命令選項信息。以上截圖不全,我在表格4-1中完整地列出了支持的命令選項。

選項名稱

使用格式

含義

-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目的路徑>

從本地移動

-mkdir

-mkdir <hdfs路徑>

創建空白文件夾

-setrep

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

修改副本數量

-touchz

-touchz <文件路徑>

創建空白文件

-stat

-stat [format] <路徑>

顯示文件統計信息

-tail

-tail [-f] <文件>

查看文件尾部信息

-chmod

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

修改權限

-chown

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

修改屬主

-chgrp

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

修改屬組

-help

-help [命令選項]

幫助

註意:以上表格中路徑包括hdfs中的路徑和linux中的路徑。對於容易產生歧義的地方,會特別指出“linux路徑”或者“hdfs路徑”。如果沒有明確指出,意味著是hdfs路徑。

下面我們講述每個命令選項的用法。

-ls 顯示當前目錄結構

該命令選項表示查看指定路徑的當前目錄結構,後面跟hdfs路徑,如圖4-1所示。

技術分享

圖4-1

上圖中的路徑是hdfs根目錄,顯示的內容格式與linux的命令ls –l顯示的內容格式非常相似,下面解析每一行的內容格式:

l 首字母表示文件夾(如果是“d”)還是文件(如果是“-”);

l 後面的9位字符表示權限;

l 後面的數字或者“-”表示副本數。如果是文件,使用數字表示副本數;文件夾沒有副本;

l 後面的“root”表示屬主;

l 後面的“supergroup”表示屬組;

l 後面的“0”、“6176”、“37645”表示文件大小,單位是字節;

l 後面的時間表示修改時間,格式是年月日時分;

l 最後一項表示文件路徑。

可見根目錄下面有四個文件夾、兩個文件。

如果該命令選項後面沒有路徑,那麽就會訪問/user/<當前用戶>目錄。我們使用root用戶登錄,因此會訪問hdfs的/user/root目錄,如圖4-2所示。

技術分享

圖4-2

如果沒有這個目錄/user/root,會提示文件不存在的錯誤。

-lsr 遞歸顯示目錄結構

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

技術分享

圖4-3

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

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

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

技術分享

圖4-4

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

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

技術分享

圖4-5

請讀者比較圖4-4與圖4-5的區別,體會兩個命令選項的不同含義。

-count 統計文件(夾)數量

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

技術分享

圖4-6

在圖4-6中有兩條命令,下面的命令是為了佐證上面命令的正確性的。

-mv 移動

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

技術分享

圖4-7

在圖4-7中有三條命令,是為了體現移動前後的變化情況。

-cp 復制

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

技術分享

圖4-8

在圖4-8中有三條命令,是為了體現復制前後的變化情況。

-rm 刪除文件/空白文件夾

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

技術分享

圖4-9

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

-rmr 遞歸刪除

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

技術分享

圖4-10

-put 上傳文件

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

技術分享

圖4-11

-copyFromLocal 從本地復制

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

-moveFromLocal 從本地移動

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

技術分享

圖4-12

-getmerge 合並到本地

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

技術分享

圖4-13

-cat 查看文件內容

該命令選項是查看文件內容,如圖4-14所示。

技術分享

圖4-14

-text 查看文件內容

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

-mkdir 創建空白文件夾

該命令選項表示創建文件夾,後面跟的路徑是在hdfs將要創建的文件夾,如圖4-15所示。

技術分享

圖4-15

-setrep 設置副本數量

該命令選項是修改已保存文件的副本數量,後面跟副本數量,再跟文件路徑,如圖4-16所示。

技術分享

圖4-16

在圖4-16中,我們修改了文件/install.log的副本數,由1修改為2,意味著多了一個副本,HDFS會自動執行文件的復制工作,產生新的副本。

如果最後的路徑表示文件夾,那麽需要跟選項-R,表示對文件夾中的所有文件都修改副本,如圖4-17所示。

技術分享

圖4-17

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

還有一個選項是-w,表示等待副本操作結束才退出命令,如圖4-18所示。

技術分享

圖4-18

請讀者自己比較以上兩圖中使用-q前後執行結果的變化情況。

-touchz 創建空白文件

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

技術分享

圖4-19

-stat 顯示文件的統計信息

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

技術分享

圖4-20

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

-tail 查看文件尾部內容

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

技術分享

圖4-21

-chmod 修改文件權限

該命令選項的使用類似於linux的shell中的chmod用法,作用是修改文件的權限,如圖4-22所示。

技術分享

圖4-22

在圖4-22中,修改了文件/emptyfile的權限。

如果加上選項-R,可以對文件夾中的所有文件修改權限,如圖4-23所示。

技術分享

圖4-23

-chown 修改屬主

該命令選項表示修改文件的屬主,如圖4-24所示。

技術分享

圖4-24

上圖中把文件/emptyfile的屬主由root修改為itcast。

也可以同時修改屬組,如圖4-25所示。

技術分享

圖4-25

在圖4-25中,把文件/emptyfile的屬主和屬組都修改為itcast,如果只修改屬組,可以使用“:itcast”。

如果帶有選項-R,意味著可以遞歸修改文件夾中的所有文件的屬主、屬組信息。

-chgrp 修改屬組

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

技術分享

圖4-26

-help 幫助

該命令選項會顯示幫助信息,後面跟上需要查詢的命令選項即可,如圖4-27所示。

技術分享

圖4-27

在圖4-27中,查詢的rm的用法。

該命令選項顯示的內容並非完全準確,比如查詢count的結果就不準確,而是把所有命令選項的用法都顯示出來,如圖4-28所示。希望新的版本以後改進。

技術分享

圖4-28

讀者短時間無法掌握全部命令用法,請重點掌握ls(r)、rm(r)、mkdir、put、get的使用。

-----------------------------------------------------------------------------

來源鏈接:https://wenku.baidu.com/view/3406704cf01dc281e53af0f8.html

Hadoop框架之HDFS的shell操作