【fs最常用指令】
<code>bin/hadoop fs -ls hdfs_path </code><code>//檢視HDFS目錄下的檔案和子目錄</code>
<code>bin/hadoop fs -mkdir hdfs_path </code><code>//在HDFS上建立檔案夾</code>
<code>bin/hadoop fs -rm hdfs_path </code><code>//删除HDFS上的檔案</code>
<code>bin/hadoop fs -rmr hdfs_path </code><code>//删除HDFS上的檔案夾</code>
<code>bin/hadoop fs -put local_file hdfs_path </code><code>//将本地檔案copy到HDFS上</code>
<code>bin/hadoop fs -get hdfs_file local_path </code><code>//複制HDFS檔案到本地</code>
<code>bin/hadoop fs -cat hdfs_file </code><code>//檢視HDFS上某檔案的内容</code>
【檢視目錄下檔案(夾)大小】
<code>//機關Byte:</code>
<code>bin/hadoop fs -du / | sort -n</code>
<code>//機關MB:</code>
<code>bin/hadoop fs -du / | awk -F </code><code>' '</code> <code>'{printf "%.2fMB\t\t%s\n", $1/1024/1024,$2}'</code> <code>| sort -n</code>
<code>//機關GB,大于1G:</code>
<code>bin/hadoop fs -du / | awk -F </code><code>' '</code> <code>'{num=$1/1024/1024/1024; if(num>1){printf "%.2fGB\t\t%s\n", num, $2} }'</code> <code>| sort -n</code>
以下内容walker摘自《Hadoop實戰(第二版)》(陸嘉恒)第九章-HDFS詳解。
fs可以說是HDFS最常用的指令,這是一個高度類似linux檔案系統的指令集。你可以使用這些指令檢視HDFS上的目錄結構檔案、上傳和下載下傳檔案、建立檔案夾、複制檔案等。其使用方法如下:
<code>hadoop fs [genericOpitions]</code>
<code>[-ls <path>] </code><code>//顯示目标路徑目前目錄下的所有檔案</code>
<code>[-lsr <path>] </code><code>//遞歸顯示目标路徑下的所有目錄及檔案(深度優先)</code>
<code>[-du <path>] </code><code>//以位元組為機關顯示目錄中所有檔案的大小,或該檔案的大小(如果path為檔案)</code>
<code>[-dus <paht>] </code><code>//以位元組為機關顯示目标檔案大小(用于檢視檔案夾大小)</code>
<code>[-count [-q] <path>] </code><code>//将目錄的大小、包含檔案(包括檔案)個數的資訊輸出到螢幕(标準stdout)</code>
<code>[-mv <src> <dst>] </code><code>//把檔案或目錄移動到目标路徑,這個指令允許同時移動多個檔案,但是隻允許移動到一個目标路徑中,參數中的最有一個檔案夾即為目标路徑</code>
<code>[-cp <src> <dst>] </code><code>//複制檔案或目錄到目标路徑,這個指令允許同時複制多個檔案,如果複制多個檔案,目标路徑必須是檔案夾</code>
<code>[-rm [-skipTrash] <path>] </code><code>//删除檔案,這個指令不能删除檔案夾</code>
<code>[-rmr [-skipTrash] <path>] </code><code>//删除檔案夾及其下的所有檔案</code>
<code>[-expunge]</code>
<code>[-put <localsrc> ... <dst>] </code><code>//從本地檔案系統上傳檔案到HDFS中</code>
<code>[-copyFromLocal <localsrc> ... <dst>] </code><code>//與put相同</code>
<code>[-moveFromLocal <localsrc> ... <dst>] </code><code>//與put相同,但是檔案上傳之後會從本地檔案系統中移除</code>
<code>[-get [-ignoreCrc] [-crc] <src> <localdst>] </code><code>//複制檔案到本地檔案系統。這個指令可以選擇是否忽視校驗和,忽視校驗和和下載下傳主要用于挽救那些已經發生錯誤的檔案</code>
<code>[-getmerge <src> <localdst> [addnl]] </code><code>//将源目錄中的所有檔案進行排序并寫入目标檔案中,檔案之間以換行符分隔</code>
<code>[-cat <src>] </code><code>//在終端顯示(标準輸出stdout)檔案中的内容,類似Linux系統中的cat</code>
<code>[-text <src>]</code>
<code>[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>] </code><code>//與get相同</code>
<code>[-moveToLocal [-crc] <src> <localdst>]</code>
<code>[-mkidr <path>] </code><code>//建立檔案夾</code>
<code>[-setrep [-R] [-w] <rep> <path/file>] </code><code>//改變一個檔案的副本個數。參數-R可以遞歸地對該目錄下的所有檔案做統一操作</code>
<code>[-touchz <path>] </code><code>//類似Linux中的touch,建立一個空檔案</code>
<code>[-test -[ezd] <path>] </code><code>//将源檔案輸出為文本格式顯示到終端上,通過這個指令可以檢視TextRecordInputStream(SequenceFile等)或zip檔案</code>
<code>[-stat [format] <path>] </code><code>//以指定格式傳回路徑的資訊</code>
<code>[-tail [-f] <file>] </code><code>//在終端上顯示(标準輸出stdout)檔案的最後1kb内容。-f選項的行為與LInux中一緻,會持續監測先添加到檔案中的内容,這在檢視日志檔案時會顯得非常友善。</code>
<code>[-chmod [-R] <MODE[,MODE]...| OCTALMODE> PATH...] </code><code>//改變檔案的權限,隻有檔案的所有者或者是超級使用者才能使用這個指令。-R可以遞歸地改變檔案夾内的所有檔案的權限</code>
<code>[-chown [-R] [OWNER] [:[GROUP] PATH...]] </code><code>//改變檔案的擁有者,-R可以遞歸地改變檔案夾内所有檔案的擁有者。同樣,這個指令隻有超級使用者才能使用</code>
<code>[-chgrp [-R] GROUP PATH...] </code><code>//改變檔案所屬的組,-R可以遞歸地改變檔案夾内所有檔案所屬的組。這個指令必須是超級使用者才能使用</code>
<code>[-help [cmd]] </code><code>//這是指令的幫助資訊</code>
在這些指令中,參數<path>的完整格式是hdfs://NameNodeIP:port/,比如你的NameNode位址是192.168.0.1,端口是9000,那麼,如果想通路HDFS上路徑為/user/root/hello的檔案,則需要輸入的位址是hdfs:/192.168.0.1:9000/user/root/hello。在Hadoop中,如果參數<path>沒有NameNodeIP,那麼會預設按照core-site.xml中屬性fs.default.name的設定,附加“/user/你的使用者名”作為路徑,這是為了友善使用以及對不同使用者進行區分。
本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1689205如需轉載請自行聯系原作者
RQSLT