HDFS命令行接口
前言:Hadoop自帶一組命令行工具,而其中有關HDFS的命令是其工作集的一個子集。命令行工作雖然是最基本的文件操作方式
但也是最常用的,所以熟練掌握是很必要的
1. 目錄瀏覽命令
ls
hdfs dfs -ls <path>
列出文件和目錄內容
例子:hdfs dfs -ls /
lsr
hdfs dfs -lsr <path>
遞歸列出目錄內容
例子:hdfs dfs -lsr /
df
hdfs dfs -df <path>
查看目錄使用情況
例子:hdfs dfs -df /
du
hdfs dfs -du <path>
查看該目錄下所有目錄及文件的大小
例子:hdfs dfs -du /
dus
hdfs dfs -dus <path>
只顯示<path>目錄的總大小,與du不同的是du會把<path>目錄下所有目錄和文件都列舉
出來,而dus只會將<dus>目錄的大小列出來
例子:hdsf dfs -dus /
2. 目錄或文件統計與測試命令
count
hdfs dfs -count [-q] <path>
顯示<path>下的目錄數及文件數,輸出格式:"目錄數 文件數 大小 路徑"
值得注意的是,統計是包含<path>本身這個目錄或者文件,且是遞歸統計
加上-q還可以查看文件的索引情況
例子:hdfs dfs -count /
test
hdfs dfs -test [-ezd] <path>
檢查HDFS上路徑為<path>的文件
-e 檢查文件是否存在,如果存在則返回0
-z 檢查文件是否是0字節。如果是則返回0
-d 如果路徑是個目錄,則返回0,否則返回1
例子:hdfs dfs -test -e /user/file
stat
顯示HDFS上路徑為<path>的文件或目錄的統計信息。格式為:
%b 文件大小
%n 文件名
%r 復制因子
%y,%Y 修改日期
例子:hdfs dfs -stat %b %n %r %y /user/file
3. 文件瀏覽命令
cat
hdfs dfs -cat <src>
瀏覽HDFS路徑為<src>的文件內容
例子:hdfs dfs -cat /user/file
text
hdfs dfs -text <src>
將HDFS路徑為<src>的文本文件輸出
例子:hdfs dfs -text /user/file
tail
hdfs dfs -tail [-f] <file>
顯示HDFS上路徑為<file>的文件最后1KB字節
-f選項會使顯示的內容隨文件內容更新而更新
例子:hdfs dfs -tail -f /user/file
4. 目錄操作命令
rmr
hdfs dfs -rmr [-skipTrash] <path>
將HDFS路徑為<path>的目錄以及目錄下的文件移近回收站
如果加上了-skipTrash參數,則直接刪除
例子:hdfs dfs -skipTrash /user
mkdir
hdfs dfs -mkdir [-p] <path>
在HDFS上創建路徑為<path>的目錄
-p 可以創建不存在的父目錄,也就是遞歸創建目錄
hdfs dfs -mkdir -p /hdfs/d1/d2/d3
5. 文件操作命令
HDFS文件系內文件操作
rm
hdfs dfs -rm [skipTrash] <path>
將HDFS上路徑為<path>的文件移動到回收站
如果加上-skipTrash參數,則直接刪除
例子:hdfs dfs -rm -skipTrash /user/file
touchz
hdfs dfs -touchz <path>
創建一個路徑為<path>的0字節的HDFS空文件
例子:hdfs dfs -touchz /user/file
setrep
hdfs dfs -setrep [-R] [-w] <rep> <path/file>
設置文件負責因子。該命令可以單獨設置文件的負責因子
加上-R可以遞歸執行該操作
例子:hdfs dfs -setrep -R 1 /user
expunge
hdfs dfs -expunge
清空回收站
例子:hdfs dfs -expunge
mv
hdfs dfs -mv <scr> <dst>
將HDFS上的文件移動到目標文件夾
例子:hdfs dfs -mv /user/test.txt user/test
將/user目錄下的test.txt文件移動到/user/test目錄下
Local到HDFS的文件操作
put
hdfs dfs -put <localsrc> <dst>
將<localsrc>本地文件上傳到HDFS的<dst>目錄下
hdfs dfs -put /home/hadoop/test.txt /user/
copyFromLocal
hdfs dfs -copyFromLocal <localsrc> <dst>
功能類似put
hdfs dfs -copyFromLocal /home/hadoop/test.txt /user
moveFromLocal
hdfs dfs -moveFromLocal <localsrc> <dst>
將<localsrc>本地文件移動到HDFS的<dst>目錄下,本地刪除
hdfs dfs -moveFromLocal /home/hadoop/test.txt /user
appendToFile
-appendToFile <localsrc> <dst>
將<localsrc>本地文件內容追加到HDFS下<dst>路徑文件里面去
hdfs dfs -appendToFile ./test.txt /hdfs/test.txt
HDFS到Local的文件操作
get
hdfs dfs -get [-ignoreCrc] [-crc] <src> <localdst>
將HDFS上<src>的文件下載到本地的<localdst>目錄
-ignoreCrc選項復制CRC驗證失敗的文件
-crc選項復制文件以及CRC信息
例子:hdfs dfs -get -crc /user/file /home/hadoop
getmerge
hdfs dfs -getmerge <src> <localdst> [addnl]
將HDFS上<scr>目錄下的所有文件按文件名順序合並成一個文件輸出
到本地的<localdst>目錄下
addnl可選,用於指定在每個文件結尾添加一個換行符
例子:hdfs dfs -getmerge /user/ /home/hadoop
copyToLocal
hdfs dfs -copyFromLocal [ignoreCrc] [-crc] <src> <localdst>
功能類似與get
例子:hdfs dfs -copyFromLocal -crc /user/file /home/hadoop
moveToLocal
hdfs dfs -moveToLocal [-crc] <src> <localdst>
將HDFS上路徑為<src>的文件移動到本地<localdst>路徑下,HDFS上刪除
-crc選項復制文件以及CRC信息
例子:hdfs dfs -moveToLocal -crc /user/file /home/hadoop
6. 權限|分組|幫助命令
chmod
hdfs dfs -chmod [-R] <MODE> <path>
改變HDFS上路勁<path>的文件權限,-R選項遞歸執行該操作
例子:hdfs dfs -chmod -R +r /user #將/user/目錄下所有文件加上文件讀權限
例子:hdfs dfs -chmod -R 755 /user #將/user/目錄下所有文件加上rwxr-xr-x權限
chown
hdfs dfs -chown [-R] [OWNER][:[GROUP]] <path>
修改HDFS上路徑為<path>的文件所屬用戶和組,-R選項表示遞歸執行該操作
例子:hdfs dfs -chown -R hadoop:hadoop /user #將/user/目錄下所有文件所屬用戶和組改為hadoop
chgrp
hdfs dfs -chgrp [-R] GROUP <path>
改變HDFS上路徑為<path>的文件所屬組別,-R表示遞歸執行該操作
例子:hdfs dfs -chgrp -R hadoop /user/
help
hdfs dfs -help
顯示所有dfs命令的幫助信息
hdfs dfs -help