1. 程式人生 > >(四) hdfs 命令學習筆記

(四) hdfs 命令學習筆記

hdfs 命令學習筆記

  • 入門
  • 幫助相關命令
  • 檢視相關命令
  • 檔案及目錄相關命令
  • 統計相關命令
  • 快照命令

入門

完成之前章節操作後,可以開始學習hdfs命令啦,輸入 hadoop fs 。

[[email protected] 桌面]# hadoop fs
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]

查詢命令幫助指南

  • usage :檢視命令用法,如檢視 ls 的。
[[email protected] 桌面]# hadoop fs -usage ls
Usage: hadoop fs [generic options] -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]
  • help :檢視命令的詳細幫助,如檢視ls命令的幫助。
[[email protected] 桌面]# hadoop fs -help ls
-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...] :
  List the contents that match the specified file pattern. If path is not
  specified, the contents of /user/<currentUser> will be listed. For a directory a
  list of its direct children is returned (unless -d option is specified).

  Directory entries are of the form:
    permissions - userId groupId sizeOfDirectory(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) directoryName

  and file entries are of the form:
    permissions numberOfReplicas userId groupId sizeOfFile(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) fileName

    -C  Display the paths of files and directories only.
    -d  Directories are listed as plain files.
    -h  Formats the sizes of files in a human-readable fashion
        rather than a number of bytes.
    -q  Print ? instead of non-printable characters.
    -R  Recursively list the contents of directories.
    -t  Sort files by modification time (most recent first).
    -S  Sort files by size.
    -r  Reverse the order of the sort.
    -u  Use time of last access instead of modification for
        display and sorting.

檢視相關命令

  • ls : 檢視檔案或目錄,下例中:hdfs://localhost:9000是fs.defaultFS配置的值,hdfs://localhost:9000/即表示HDFS檔案系統中根目錄,如果使用的是HDFS檔案系統, 可以簡寫為/。
[root@slave1 桌面]# hadoop fs -ls hdfs://192.168.248.132:9000/
Found 1 items
drwxr-xr-x   - root supergroup          0 2017-05-26 16:06 hdfs://192.168.248.132:9000/user
[root@slave1 桌面]# hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2017-05-26 16:06 /user

選項-R:連同子目錄的檔案一起列出(我的目錄裡面沒有子目錄),例:

[[email protected] 桌面]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         14 2017-05-26 17:26 /input.txt
drwxr-xr-x   - root supergroup          0 2017-05-26 16:06 /user
  • cat :顯示檔案內容
[root@slave1 tmp]# hadoop fs -cat /input.txt
hello hadoop!
hello hadoop!
  • text:將給定的檔案以文字的格式輸出,允許的格式zip、TextRecordInputStream、Avro。當檔案為文字檔案時,等同於cat。例:
[root@slave1 tmp]# hadoop fs -text /input.txt
hello hadoop!
hello hadoop!
  • checksum:顯示檔案的校驗和資訊。因為需要和儲存檔案每個塊的datanode互相通訊,因此對大量的檔案使用此命令效率可能會低
[root@slave1 tmp]# hadoop fs -checksum /input.zip
/input.zip  MD5-of-0MD5-of-0CRC32   00000000000000000000000070bc8f4b72a86921468bf8e8441dce51

檔案及目錄相關命令

  • touchz : 建立一個空檔案,如果存在指定名稱的非空檔案,則返回錯誤。
[root@slave1 tmp]# hadoop fs -touchz /input.zip
[root@slave1 tmp]# hadoop fs -touchz /input
[root@slave1 tmp]# hadoop fs -ls /
Found 2 items
-rw-r--r--   2 root supergroup          0 2017-05-27 10:09 /input
-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /input.zip
  • appendToFile: 向現有檔案中追加內容。
[root@slave1 tmp]# hadoop fs -touchz /input.txt  --建立一個input.txt檔案
[root@slave1 tmp]# hadoop fs -text /input.txt  --檢視建立的input.txt的內容
[root@slave1 tmp]# hadoop fs -appendToFile ~/text/input.txt /input.txt    -- 從本地檔案讀取內容,並且將內容新增到之前建立的檔案中。
[root@slave1 tmp]# hadoop fs -text /input.txt
hello hadoop!
[root@slave1 tmp]# hadoop fs -appendToFile /test/input.txt /input.txt
[root@slave1 tmp]# hadoop fs -text /input.txt
hello hadoop!
hello hadoop!
  • put: 從本地上傳檔案。(小編本來想一將txt傳到制定資料夾,但是不知道為什麼,/input識別出來不是資料夾,是檔案,並且作為檔案,往裡面填寫內容)
[hadoop@slave1 tmp]$ hadoop fs -put ~/Desktop/input1.txt /
[hadoop@slave1 tmp]$ hadoop fs -text /input1.txt     --檢視上傳後的檔案內容
hello hadoop!

選項-f:如果檔案已經存在,覆蓋已有檔案

[[email protected] tmp]$ hadoop fs -put ~/Desktop/input1.txt /
put: /input1.txt': File exists   --檔案已存在時給出錯誤提示
[[email protected] tmp]$ hadoop fs -put -f ~/Desktop/input1.txt /   --使用-f選項後沒有再報錯

選項-p:保留原檔案的訪問、修改時間,使用者和組,許可權屬性

[root@slave1 tmp]# ll /test/input1.txt
-rw-r--r--. 1 root root 14 526 17:19 /test/input1.txt
[root@slave1 tmp]# chmod 777 /test/input1.txt
[root@slave1 tmp]# hadoop fs -put -f /test/input1.txt /
[root@slave1 tmp]# hadoop fs -ls /input1.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 13:24 /input1.txt
[root@slave1 tmp]# hadoop fs -put -f -p /test/input1.txt /
[root@slave1 tmp]# hadoop fs -ls /input1.txt
-rwxrwxrwx   2 root root         14 2017-05-26 17:19 /input1.txt
  • get:  從HDFS上下載檔案到本地,與put不同,沒有覆蓋本地已有檔案的選項。
[[email protected] tmp]# hadoop fs -get /input1.txt /test
get: `/test/input1.txt': File exists
[[email protected] tmp]# hadoop fs -get /input1.txt /test/input2.txt
[[email protected] tmp]# cat /test/input2.txt
hello hadoop!
  • getmerge: 將指定的HDFS中原目錄下的檔案合併成一個檔案並下載到本地,原始檔保留。
  • 選項-nl:在每個檔案的最後增加一個新行
[root@slave1 tmp]# hadoop fs -ls /test
Found 2 items
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
[root@slave1 tmp]# hadoop fs -getmerge -nl /test /test/merge.txt
[root@slave1 tmp]# cat /test/merge.txt
hello hadoop!

welcome to hadoop
  • copyFromLocal: 從本地檔案系統上傳檔案到HDFS,與put命令相同。

  • copyToLocal: 從HDFS下載檔案到本地檔案系統,與get命令相同。

  • moveFromLocal: 與put命令相同,只是上傳成功後本地檔案會被刪除。

  • mv: 同linux的mv命令,移動或重新命名檔案。

[[email protected] tmp]# hadoop fs -ls
ls: `.': No such file or directory
[[email protected] tmp]# hadoop fs -ls /
Found 6 items
-rw-r--r--   2 root supergroup         14 2017-05-27 11:16 /input
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
**-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /input.zip**
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 13:54 /test
[[email protected] tmp]# hadoop fs -mv /input.zip /input1.zip
[[email protected]lave1 tmp]# hadoop fs -ls /
Found 6 items
-rw-r--r--   2 root supergroup         14 2017-05-27 11:16 /input
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
**-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /input1.zip**
drwxr-xr-x   - root supergroup          0 2017-05-27 13:54 /test
[[email protected] tmp]# hadoop fs -mv /input1.zip /input
mv: `/input': File exists
[[email protected] tmp]# hadoop fs -mv /input1.zip /input1
mv: `/input1': File exists
[[email protected] tmp]# hadoop fs -mv /input1.zip /test
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         14 2017-05-27 11:16 /input
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
**-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /test/input1.zip**
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
  • cp:複製
  • 選項-f:如果檔案已存在,覆蓋已有檔案

  • mkdir:建立資料夾

[[email protected] tmp]# hadoop fs -mkdir /input3
[[email protected] tmp]# hadoop fs -ls /
Found 6 items
-rw-r--r--   2 root supergroup         14 2017-05-27 11:16 /input
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test

 選項-p:如果上層目錄不存在,遞迴建立所需目錄

[[email protected] tmp]# hadoop fs -mkdir -p /input4/input4_1/input4_1_1
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         14 2017-05-27 11:16 /input
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:56 /input4
drwxr-xr-x   - root supergroup          0 2017-05-27 14:56 /input4/input4_1
drwxr-xr-x   - root supergroup          0 2017-05-27 14:56 /input4/input4_1/input4_1_1
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
  • rm:刪除檔案
[root@slave1 tmp]# hadoop fs -rm /input
Deleted /input

選項-r:遞迴的刪除,可以刪除非空目錄

[[email protected] tmp]# hadoop fs -rm /input4
rm: `/input4': Is a directory    -- 這裡提示資料夾不能刪
[[email protected] tmp]# hadoop fs -rm -r /input4
Deleted /input4
  • rmdir: 刪除空目錄
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
[[email protected] tmp]# hadoop fs -rmdir /test
rmdir: `/test': Directory is not empty   --目錄非空的話,會報錯

選項–ignore-fail-on-non-empty:忽略非空刪除失敗時的提示。其實是沒有刪除的,但是也沒有失敗提醒。

[[email protected] tmp]# hadoop fs -rmdir --ignore-fail-on-non-empty /test
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   2 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
[[email protected] tmp]# 
  • setrep: 改變一個檔案的副本數
[root@slave1 tmp]# hadoop fs -stat %r /input1
2
[root@slave1 tmp]# hadoop fs -setrep 3 /input1
Replication 3 set: /input1
[root@slave1 tmp]# hadoop fs -stat %r /input1
3

選項-w:命令等待副本數調整完成

[[email protected] tmp]# hadoop fs -setrep -w 1 /input1
Replication 1 set: /input1
Waiting for /input1 ... done
  • setrep: 改變一個檔案的副本數
  • chgrp: 修改檔案組。  選項-R:遞迴修,如果是目錄,則遞迴的修改其下的檔案及目錄,更新到的檔案組就算不存在,也能更新成功。
[[email protected] tmp]# hadoop fs -ls -R  /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root supergroup          0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
[[email protected] tmp]# hadoop fs -chgrp test /test/input1.zip
[[email protected] tmp]# hadoop fs -ls -R  /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rw-r--r--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root test                0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
  • setrep: 修改檔案許可權,許可權模式同linux shell命令中的模式
[[email protected] tmp]# hadoop fs -chmod 754 /input1
[[email protected] tmp]# hadoop fs -ls -R  /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rwxr-xr--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root test                0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt

  • chown: 修改檔案的使用者或組,選項-R:遞迴修改,如果是目錄,則遞迴的修改其下的檔案及目錄
[[email protected] tmp]# hadoop fs -ls -R  /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rwxr-xr--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 root test                0 2017-05-27 10:00 /test/input1.zip -- 原使用者和組
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
[[email protected] tmp]# hadoop fs -chown test /test/input1.zip
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rwxr-xr--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 test test                0 2017-05-27 10:00 /test/input1.zip --向用戶和組
-rw-r--r--   2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13:54 /test/test2.txt
  • getfacl:訪問控制列表,選項-R:遞迴顯示
[root@slave1 tmp]# hadoop fs -getfacl /test/input1.zip
# file: /test/input1.zip
# owner: test
# group: test
user::rw-
group::r--
other::r--
[root@slave1 tmp]# hadoop fs -getfacl -R /test
# file: /test
# owner: root
# group: supergroup
user::rwx
group::r-x
other::r-x

# file: /test/input1.zip
# owner: test
# group: test
user::rw-
group::r--
other::r--

# file: /test/test.txt
# owner: root
# group: supergroup
user::rw-
group::r--
other::r--

# file: /test/test2.txt
# owner: root
# group: supergroup
user::rw-
group::r--
other::r--
  • setfacl:設定訪問控制列表,acls預設未開啟,直接使用該命令會報錯
[[email protected] tmp]# hadoop fs -setfacl -b /test/test.txt
setfacl: The ACL operation has been rejected.  Support for ACLs has been disabled by setting dfs.namenode.acls.enabled to false.

 開啟acls,配置hdfs-site.xml

[[email protected] hadoop-2.5.2]$ vi etc/hadoop/hdfs-site.xml
<property>
    <name>dfs.namenode.acls.enabled</name>
    <value>true</value>
</property>

選項-m:修改acls

[root@slave1 tmp]# hadoop fs -getfacl /test/test.txt
# file: /test/test.txt
# owner: root
# group: supergroup
user::rw-
group::r--
other::r--

[root@slave1 tmp]# hadoop fs -setfacl -m user::rw-,user:hadoop:rw-,group::r--,other::r-- /test/test.txt
[root@slave1 tmp]# hadoop fs -getfacl /test/test.txt
# file: /test/test.txt
# owner: root
# group: supergroup
user::rw-
user:hadoop:rw-
group::r--
mask::rw-
other::r--

選項-x:刪除指定規則

[root@slave1 tmp]# hadoop fs -getfacl /test/test.txt
# file: /test/test.txt
# owner: root
# group: supergroup
user::rw-
user:hadoop:rw-
group::r--
mask::rw-
other::r--

[root@slave1 tmp]# hadoop fs -setfacl -x user:hadoop /test/test.txt
[root@slave1 tmp]# hadoop fs -getfacl /test/test.txt
# file: /test/test.txt
# owner: root
# group: supergroup
user::rw-
group::r--
mask::r--
other::r--
  • setfattr:設定擴充套件屬性的名稱和值,
    選項-n:屬性名稱 選項-v:屬性值
[[email protected] tmp]# hadoop fs -getfattr -d /test/input.zip
getfattr: `/test/input.zip': No such file or directory
[[email protected] tmp]# hadoop fs -getfattr -d /test/input1.zip
# file: /test/input1.zip
[[email protected] tmp]# hadoop fs -setfattr -n user.web -v www.baidu.com /test/input1.zip
[[email protected] tmp]# hadoop fs -getfattr -d /test/input1.zip# file: /test/input1.zip
user.web="www.baidu.com"

選項-x:刪除擴充套件屬性

[root@slave1 tmp]# hadoop fs -getfattr -d /test/input1.zip# file: /test/input1.zip
user.web="www.baidu.com"
[root@slave1 tmp]# hadoop fs -setfattr -x user.web /test/input1.zip
[root@slave1 tmp]# hadoop fs -getfattr -d /test/input1.zip
# file: /test/input1.zip
  • getfattr:設定擴充套件屬性的名稱和值,選項-n:顯示指定名稱的屬性值.
[[email protected] hadoop-2.5.2]$ hadoop fs -getfattr -n user.web /input.zip
# file: /input.zip
user.web="www.baidu.com"

統計相關命令

  • count:顯示指定檔案或目錄的:DIR_COUNT、FILE_COUNT、CONTENT_SIZE、 FILE_NAME,分別表示:子目錄個數(如果指定路徑是目錄,則包含該目錄本身)、檔案個數、使用位元組個數,以及檔案或目錄名。
[root@slave1 tmp]# hadoop fs -count /
           3            6                 88 /

選項-q:顯示配額資訊(在多人共用的情況下,可以通過限制使用者寫入目錄,並設定目錄的quota ,防止不小心就把所有的空間用完造成別人無法存取的情況)。配額資訊包括:QUOTA、REMAINING_QUOTA、SPACE_QUOTA、REMAINING_SPACE_QUOTA,分別表示某個目錄下檔案及目錄的總數、剩餘目錄或文件數量、目錄下空間的大小、目錄下剩餘空間。

  計算公式:

  QUOTA – (DIR_COUNT + FILE_COUNT) = REMAINING_QUOTA;

  SPACE_QUOTA – CONTENT_SIZE = REMAINING_SPACE_QUOTA。

  none和inf表示未配置。

[root@slave1 tmp]# hadoop fs -count -q /
9223372036854775807 9223372036854775798            none             inf            3            6                 88 /
  • du:顯示檔案大小,如果指定目錄,會顯示該目錄中每個檔案的大小。
[[email protected] tmp]# hadoop fs -ls -R /
-rw-r--r--   2 root supergroup         28 2017-05-27 10:15 /input.txt
-rwxr-xr--   1 root supergroup         14 2017-05-27 11:10 /input1
-rwxrwxrwx   2 root root               14 2017-05-26 17:19 /input1.txt
drwxr-xr-x   - root supergroup          0 2017-05-27 14:54 /input3
drwxr-xr-x   - root supergroup          0 2017-05-27 14:42 /test
-rw-r--r--   2 test test                0 2017-05-27 10:00 /test/input1.zip
-rw-r--r--+  2 root supergroup         14 2017-05-27 13:51 /test/test.txt
-rw-r--r--   2 root supergroup         18 2017-05-27 13: