場景
CentOS7上搭建Hadoop集群(入門級):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883
在上面搭建起來Hadoop集群的基礎上,通過HDFS shell的方式訪問HDFS的常用命令。
HDFS的訪問方式有兩種:一種是HDFS shell,一種是Java API方式。HDFS shell命令應
使用hadoop fs或hdfs dfs(其中官網建議使用hdfs dfs方式訪問)。所有的HDFS shell命令使
用URI路徑作為參數,URI格式是scheme://path,對於HDFS文件系統,scheme是hdfs;對
於本地文件系統,scheme是file。其中scheme是可選的,如果未加指定,默認是HDFS文件
系統。一個HDFS文件或目錄如parent/path可以表示成hdfs://parent/path,或者是更簡單的
/parent/path
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
啟動HDFS后,顯示常用命令的用法
hdfs dfs
[root@master sbin]# hdfs dfs Usage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>] [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...] [-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>] [-createSnapshot <snapshotDir> [<snapshotName>]] [-deleteSnapshot <snapshotDir> <snapshotName>] [-df [-h] [<path> ...]] [-du [-s] [-h] [-x] <path> ...] [-expunge] [-find <path> ... <expression> ...] [-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] [-getfacl [-R] <path>] [-getfattr [-R] {-n name | -d} [-e en] <path>] [-getmerge [-nl] [-skip-empty-file] <src> <localdst>] [-help [cmd ...]] [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]] [-mkdir [-p] <path> ...] [-moveFromLocal <localsrc> ... <dst>] [-moveToLocal <src> <localdst>] [-mv <src> ... <dst>] [-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>] [-renameSnapshot <snapshotDir> <oldName> <newName>] [-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...] [-rmdir [--ignore-fail-on-non-empty] <dir> ...] [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]] [-setfattr {-n name [-v value] | -x name} <path>] [-setrep [-R] [-w] <rep> <path> ...] [-stat [format] <path> ...] [-tail [-f] <file>] [-test -[defsz] <path>] [-text [-ignoreCrc] <src> ...] [-touchz <path> ...] [-truncate [-w] <length> <path> ...] [-usage [cmd ...]] Generic options supported are -conf <configuration file> specify an application configuration file -D <property=value> use value for given property -fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations. -jt <local|resourcemanager:port> specify a ResourceManager -files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster -libjars <comma separated list of jars> specify comma separated jar files to include in the classpath. -archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines. The general command line syntax is command [genericOptions] [commandOptions]
1、usage
例如查看ls的用法
hdfs dfs -usage ls
2、help
查看命令的詳細幫助,例如查看ls命令的幫助
hdfs dfs -help ls
3、ls
查看文件或目錄
hdfs dfs -ls hdfs://master:9000/
這里的hdfs://master:9000/是fs.defaultFS配置的值,表示HDFS系統中的根目錄
如果使用的是HDFS文件系統,可以簡寫為/
加上選項-R 連同子目錄的文件一起列出
4、put
從本地文件系統上傳文件到HDFS
hdfs dfs -put /usr/local/1.txt /
左邊是本地文件系統的路徑 右邊是HDFS系統的路徑,這里是根目錄
5、cat
顯示文件內容
hdfs dfs -cat /1/txt
6、text
給指定的文件以文本的格式輸出,允許的格式有zip、TextRecordInpurStream、Avro。
當文件為文本文件時,等同於cat
hdfs dfs -text /1.txt
7、tail
顯示文件最后1KB的內容。
hdfs dfs -tail /1.txt
8、touchz
創建一個空文件
hdfs dfs -touchz /badao.txt
9、get
從HDFS上下載文件到本地
hdfs dfs -get /badao.txt
10、copyFromLocal
從本地系統上傳文件到HDFS,與put命令相同
11、copyToLocal
從HDFS下載文件到本地文件系統,與get命令相同
12、moveFromLocal
與put命令相同,只是上傳成功后本地文件會被刪除
13、mv
同Linux的mv命令,移動或重命名文件
hdfs dfs -mv /1.txt /user
14、cp
復制文件
hdfs dfs -cp /badao.txt /badaocopy.txt
15、mkdir
創建文件夾
hdfs dfs -mkdir /newdir
16、rm
刪除文件
hdfs dfs -rm /badaocopy.txt
選線 -r 可以遞歸的刪除,可以刪除非空目錄。
17、rmdir
刪除空目錄
hdfs dfs -rmdir /newdir
18、expunge
清空回收站
hdfs dfs -expunge
19、chmod
改變權限
hdfs dfs -chmod 777 /badao.txt
20、count
顯示指定文件或目錄
hdfs dfs -count -q /
21、du
顯示文件大小
如果指定目錄,會顯示該目錄中每個文件的大小
hdfs dfs -du /
22、df
檢查文件系統的磁盤空間占用情況
hdfs dfs -df /
23、stat
顯示文件統計信息
格式:
%b為文件所占的塊數,%g為文件所屬的用戶組,%n為文件名,%o為數據塊大小
%r為備份數,%u為文件所屬用戶,%y為文件修改時間。
hdfs dfs -stat %b,%g,%n,%o,%r,%u,%y /user
24、createSnapshot
創建快照。
Snapshot(快照)是一個全部文件系統或者某個目錄在某一時刻的鏡像。
創建動作僅僅是在目錄對應的innode上加個快照的標簽,不會涉及數據塊的拷貝操作,也不會
對讀寫性能有影響,但是會占用NameNode一定的額外內存來存放快照中被修改的文件和目錄
的元信息。
hdfs dfs -createSnapshot /user snap1
會提示:
Directory is not a snapshottable directory : /user
然后
hdfs dfsadmin -allowSnapshot /user
再執行即可
25、renameSnapshot
重命名快照
hdfs dfs -renameSnapshot 路徑 舊名稱 新名稱
比如:
hdfs dfs -renameSnapshot /user snap1 snap2
26、deleteSnapshot
刪除快照
hdfs dfs -deleteSnapshot /user snap2