天天看點

hadoop shell指令字典詳解

可以帶着下面問題來閱讀:

1.chmod與chown的差別是什麽?

2.cat将路徑指定檔案的内容輸出到哪裡?

3.cp能否是不同之間複制?

4.hdfs如何檢視檔案大小?

5.hdfs如何合并檔案?

6.如何顯示目前路徑下的所有檔案夾和檔案

7.rm删除檔案失敗的原因什麼?

8.如何檢視檔案的建立時間

9.檢視檔案指令的内容有哪些?能否說出三種?

10.如何判斷檔案是否存在?

11.如何建立0位元組檔案

對于指令,我們一次性記住,可能以後又忘記了,這裡大家用到的時候,可以檢視一下。

調用檔案系統(FS)Shell指令應使用 bin/hadoop fs <args>的形式。 所有的的FS shell指令使用URI路徑作為參數。URI格式是scheme://authority/path。對HDFS檔案系統,scheme是hdfs,對本地檔案系統,scheme是file。其中scheme和authority參數都是可選的,如果未加指定,就會使用配置中指定的預設scheme。一個HDFS檔案或目錄比如/parent/child可以表示成hdfs://namenode:namenodeport/parent/child,或者更簡單的/parent/child(假設你配置檔案中的預設值是namenode:namenodeport)。大多數FS Shell指令的行為和對應的Unix Shell指令類似,不同之處會在下面介紹各指令使用詳情時指出。出錯資訊會輸出到stderr,其他資訊輸出到stdout。

(stderr與stdout這裡可以了解為檔案)

cat

使用方法:hadoop fs -cat URI [URI …]

将路徑指定檔案的内容輸出到stdout。

示例:

hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2

hadoop fs -cat file:///file3 /user/hadoop/file4

傳回值:

成功傳回0,失敗傳回-1。

chgrp

chmod

使用方法:hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI …]

chown

使用方法:hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

copyFromLocal

使用方法:hadoop fs -copyFromLocal <localsrc> URI

除了限定源路徑是一個本地檔案外,和put指令相似。

copyToLocal

使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

除了限定目标路徑是一個本地檔案外,和get指令類似。

cp

使用方法:hadoop fs -cp URI [URI …] <dest>

将檔案從源路徑複制到目标路徑。這個指令允許有多個源路徑,此時目标路徑必須是一個目錄。 

hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2

hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

du

使用方法:hadoop fs -du URI [URI …]

顯示目錄中所有檔案的大小,或者當隻指定一個檔案時,顯示此檔案的大小。

hadoop fs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://host:port/user/hadoop/dir1 

成功傳回0,失敗傳回-1。 

dus

使用方法:hadoop fs -dus <args>

顯示檔案的大小。

expunge

使用方法:hadoop fs -expunge

get

使用方法:hadoop fs -get [-ignorecrc] [-crc] <src> <localdst> 

複制檔案到本地檔案系統。可用-ignorecrc選項複制CRC校驗失敗的檔案。使用-crc選項複制檔案以及CRC資訊。

hadoop fs -get /user/hadoop/file localfile

hadoop fs -get hdfs://host:port/user/hadoop/file localfile

getmerge

使用方法:hadoop fs -getmerge <src> <localdst> [addnl]

接受一個源目錄和一個目标檔案作為輸入,并且将源目錄中所有的檔案連接配接成本地目标檔案。addnl是可選的,用于指定在每個檔案結尾添加一個換行符。

ls

使用方法:hadoop fs -ls <args>

如果是檔案,則按照如下格式傳回檔案資訊:

檔案名 <副本數> 檔案大小 修改日期 修改時間 權限 使用者ID 組ID 

如果是目錄,則傳回它直接子檔案的一個清單,就像在Unix中一樣。目錄傳回清單的資訊如下:

目錄名 <dir> 修改日期 修改時間 權限 使用者ID 組ID 

hadoop fs -ls /user/hadoop/file1 /user/hadoop/file2 hdfs://host:port/user/hadoop/dir1 /nonexistentfile 

lsr

使用方法:hadoop fs -lsr <args> 

ls指令的遞歸版本。類似于Unix中的ls -R。

mkdir

使用方法:hadoop fs -mkdir <paths> 

接受路徑指定的uri作為參數,建立這些目錄。其行為類似于Unix的mkdir -p,它會建立路徑中的各級父目錄。

hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2

hadoop fs -mkdir hdfs://host1:port1/user/hadoop/dir hdfs://host2:port2/user/hadoop/dir

movefromLocal

使用方法:dfs -moveFromLocal <src> <dst>

輸出一個”not implemented“資訊。

mv

使用方法:hadoop fs -mv URI [URI …] <dest>

将檔案從源路徑移動到目标路徑。這個指令允許有多個源路徑,此時目标路徑必須是一個目錄。不允許在不同的檔案系統間移動檔案。 

hadoop fs -mv /user/hadoop/file1 /user/hadoop/file2

hadoop fs -mv hdfs://host:port/file1 hdfs://host:port/file2 hdfs://host:port/file3 hdfs://host:port/dir1

put

使用方法:hadoop fs -put <localsrc> ... <dst>

從本地檔案系統中複制單個或多個源路徑到目标檔案系統。也支援從标準輸入中讀取輸入寫入目标檔案系統。

hadoop fs -put localfile /user/hadoop/hadoopfile

hadoop fs -put localfile1 localfile2 /user/hadoop/hadoopdir

hadoop fs -put localfile hdfs://host:port/hadoop/hadoopfile

hadoop fs -put - hdfs://host:port/hadoop/hadoopfile 

從标準輸入中讀取輸入。

rm

使用方法:hadoop fs -rm URI [URI …]

删除指定的檔案。隻删除非空目錄和檔案。請參考rmr指令了解遞歸删除。

hadoop fs -rm hdfs://host:port/file /user/hadoop/emptydir

rmr

使用方法:hadoop fs -rmr URI [URI …]

delete的遞歸版本。

hadoop fs -rmr /user/hadoop/dir

hadoop fs -rmr hdfs://host:port/user/hadoop/dir

setrep

使用方法:hadoop fs -setrep [-R] <path>

改變一個檔案的副本系數。-R選項用于遞歸改變目錄下所有檔案的副本系數。

hadoop fs -setrep -w 3 -R /user/hadoop/dir1

stat

使用方法:hadoop fs -stat URI [URI …]

傳回指定路徑的統計資訊。

hadoop fs -stat path

tail

使用方法:hadoop fs -tail [-f] URI

将檔案尾部1K位元組的内容輸出到stdout。支援-f選項,行為和Unix中一緻。

hadoop fs -tail pathname

test

使用方法:hadoop fs -test -[ezd] URI

選項:

-e 檢查檔案是否存在。如果存在則傳回0。

-z 檢查檔案是否是0位元組。如果是則傳回0。 

-d 如果路徑是個目錄,則傳回1,否則傳回0。

hadoop fs -test -e filename

text

使用方法:hadoop fs -text <src> 

将源檔案輸出為文本格式。允許的格式是zip和TextRecordInputStream。

touchz

使用方法:hadoop fs -touchz URI [URI …] 

建立一個0位元組的空檔案。

hadoop -touchz pathname

推薦文章

<a href="http://www.aboutyun.com/thread-6742-1-1.html" target="_blank">hadoop入門:hadoop使用shell指令總結</a>

補充部分

在整理一下,算是補充

查閱幫助查閱某個指令的幫助指令如下:

Hadoop fs –help ls

HDFS檔案指令清單cat  hadoop fs –cat file [file…]顯示檔案内容。若要讀取壓縮檔案,應該使用text指令。

chgrp    hadoop fs –chgrp [-R] GROUP PATH [PATH …] 變更檔案和目錄的群組。選項-R遞歸的執行變更。使用者必須為檔案的所有者或超級使用者。

chmod   hadoop fs –chmod [-R]MODE[,MODE …] PATH [PATH …]變更檔案和目錄的通路權限。類似于unix對應的指令,MODE可以為一個3位8進制數,或{augo}+/-{rwxX}.選項-R遞歸的執行變更。使用者必須為檔案所有者或超級使用者。

chown   hadoop fs–chown [-R] [OWNER] [:[GROUP]] PATH [PATH …]變更檔案和目錄的所有者。選項-R為遞歸執行變更。使用者必須為超級使用者。

copyFromLocal   hadoop fs–copyFromLocal LOCALSRC [LOCALSRC …] DST等同于put,從本地檔案系統中複制檔案。

copyToLocal hadoop fs –copyToLocal[-ignoreecrc] [-crc] SRC [SRC …] LOCALDST等同于get,将檔案複制到本地檔案系統中。

count    hadoop fs–count [-q] PATH [PATH …] 顯示由PATH确定的子目錄個數、檔案個數、使用位元組個數,以及所有的檔案/目錄名。選項-q顯示額度資訊。

cp   hadoop fs –cp SRC [SRC …]DST     将檔案從源複制到目的地。如果指定了多個源,目的端必須為一個目錄。

du   hadoop fs –du PATH [PATH..]  顯示檔案大小,如果PATH是一個目錄,會顯示該目錄中每個檔案的大小。檔案名用完整的URI協定字首表示。請注意雖然du反映了磁盤使用情況,但不能望文生義,因為真實的磁盤使用情況依賴于塊大小和副本系數。

dus  hadoop fs –dus PATH [PATH…]      類似于du,但是當作用于目錄時,dus會顯示檔案大小之和。

expunge      hadoop fs–expunge 清空資源回收筒。如果打開資源回收筒屬性,當檔案被删除時,它首先會移動到臨時目錄.Trash/中。隻有超過使用者設定的延遲之後,檔案才會被永久删除。而expunge指令強制删除.Trash/目錄中的所有檔案。

get  hadoop fs –get[ignorecrc] [-crc] SRC [SRC …]LOCALDST      将檔案複制到本地檔案系統。如果指定了多個源檔案,本地目的端必須為一個目錄。如果LOCALDST被置為-,檔案被複制到stdout。

getmerge    hadoop fs–getmerge SRC [SRC …] LOCALDST[addnl]    擷取由SRC指定的所有檔案,将它們合并為單個檔案,并寫入打本地檔案系統中的LOCALDST。選項addnl将在每個檔案的末尾處加上一個換行符。

help      hadoop fs–help[CMD]    顯示指令CMD的用法資訊。如果不顯示CMD,則顯示所有指令的用法資訊。

ls    hadoop fs –lsPATH[PATH…]   列出檔案和目錄,每個入口點會顯示檔案名、權限、所有者、組、大小和修改時間。檔案入口點還會顯示它們的副本系數。

lsr   hadoop fs –lsr PATH [PATH…]  ls的遞歸版本。

mkdir hadoop fs–mkdir   PATH [PATH..]    建立目錄,會建立路徑中所有缺失的父目錄(類似于unix的mkdir–p)    

moveFromLocal  hadoop fs –moveFromLocalLOCALSRC [LOCALSRC …]DST   類似于put,隻是本地的源在複制之後會被删除。

moveToLocal      hadoop fs–moveToLocal [-crc] SRC [SRC …]LOCALDST         顯示一條“not implemented yet”消息。

mv  hadoop fs–mv    SRC [SRC…]DST     将檔案從源移動到目的地。如果指定多個源檔案,目的端必須為一個目錄。不允許跨檔案系統的移動。

put  hadoop fs –put LOCALSRC[LOCALSRC …]DST   從本地檔案系統中複制檔案或目錄到HDFS。如果LOCALSRC被置為-,則輸入為stdin且DST必須為檔案。

rm  hadoop fs –rm PATH[PATH…]       删除檔案和空目錄。

rmr     hadoop fs–rmr PATH [PATH…]     rm的遞歸版本。

setrep   hadoop fs–setrep [-R] [-w] REP PATH [PATH …] 改變檔案的目标副本系數,放入REP中。選項-R将遞歸的改變PATH指定的目錄中所有檔案的目标副本系數。副本系數需要一定的時間才能達到目标值。選項-w将等待副本系數以與目标值相比對。

stat hadoop fs –stat [FORMAT]PATH [PATH …]  顯示檔案中的統計資訊。FORMAT字元串完全被列印出來,但會按照以下設定的格式進行替換

                                                                            %b 以資料塊為機關的檔案大小

                                                                            %F根據檔案類型為字元串“directory”或“regularfile”

                                                                            %n檔案名

                                                                            %o塊大小

                                                                            %r 副本

                                                                            %y 以yyyy-MM-dd HH:mm:ss格式顯示的UTC時間。

                                                                           %Y 自1970年1月1日起(UTC)計的毫秒數。

tail  hadoop fs –tail [-f]FILE    顯示FILE中最後的1KB資料。

test hadoop fs –test –[ezd]PATH   對PATH進行如下類型的檢查。

             -e PATH是否存在。如果PATH存在,傳回0.

             -z 檔案是否為空。如果長度為0,傳回0.

             -d 是否為目錄。如果PATH為目錄,傳回0.

text hadoop fs –text FILE [FILE…]   顯示檔案的文本内容。當檔案為文本檔案時,等同于cat。檔案為壓縮格式(gzip以及hadoop的二進制序列檔案格式)時,會先解壓縮。

touchz   hadoop fs–touchz FILE [FILE…]     建立長度為0的檔案。如果檔案已存在,且長度非0,則報錯。

文章摘自: aboutyun 轉載請注明出處。

本文轉自  ChinaUnicom110  51CTO部落格,原文連結:http://blog.51cto.com/xingyue2011/1966228