【大数据】HDFS客户端命令行(hdfs dfs)详细使用说明

DFS命令使用

  • 概览
  • 查看帮助
  • 使用说明
    • ls
    • df
    • du
    • count
    • setfacl
    • getfacl
    • getmerge
    • cp
    • copyFromLocal和put
    • copyToLocal和-get
    • appendToFile

概览

hadoop分布式文件系统客户端命令行操作
【大数据】HDFS客户端命令行(hdfs dfs)详细使用说明_第1张图片
全局变量说明

<path> … hdfs中一个或多个路径,如果未指定,默认为/user/<currentUser>
<localsrc> … 本地文件系统的的一个或多个路径
<dst> hdfs中目标路径

查看帮助

命令:hdfs dfs -help  [cmd ...]
参数:
	cmd... 需要查询的一个或多个命令

使用说明

Usage: hadoop fs [generic options]
	[-appendToFile <localsrc> ... <dst>]
	[-cat [-ignoreCrc] <src> ...]
	[-checksum [-v] <src> ...]
	[-chgrp [-R] GROUP PATH...]
	[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
	[-chown [-R] [OWNER][:[GROUP]] PATH...]
	[-concat <target path> <src path> <src path> ...]
	[-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] <localsrc> ... <dst>]
	[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
	[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] [-s] <path> ...]
	[-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
	[-createSnapshot <snapshotDir> [<snapshotName>]]
	[-deleteSnapshot <snapshotDir> <snapshotName>]
	[-df [-h] [<path> ...]]
	[-du [-s] [-h] [-v] [-x] <path> ...]
	[-expunge [-immediate] [-fs <path>]]
	[-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>]
	[-head <file>]
	[-help [cmd ...]]
	[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]]
	[-mkdir [-p] <path> ...]
	[-moveFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
	[-moveToLocal <src> <localdst>]
	[-mv <src> ... <dst>]
	[-put [-f] [-p] [-l] [-d] [-t <thread count>] <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] [-s <sleep interval>] <file>]
	[-test -[defswrz] <path>]
	[-text [-ignoreCrc] <src> ...]
	[-touch [-a] [-m] [-t TIMESTAMP (yyyyMMdd:HHmmss) ] [-c] <path> ...]
	[-touchz <path> ...]
	[-truncate [-w] <length> <path> ...]
	[-usage [cmd ...]]

Path 路径支持正则表达式

通配符 名称 匹配
* 星号 匹配0或多个字符
问号 匹配单一字符
[ab] 字符类别 匹配{a,b}中的一个字符
[^ab] 非字符类别 匹配不是{a,b}中的一个字符
[a-b] 字符范围 匹配一个在{a,b}范围内的 字符(包括ab),a在字典 顺序上要小于或等于b
[^a-b] 非字符范围 匹配一个不在{a,b}范围内 的字符(包括ab),a在字 典顺序上要小于或等于b
{a,b} 或选择 匹配包含a或b中的一个的语句

匹配例子

通配符 扩展
/* /2007/2008
/*/* /2007/12 /2008/01
/*/12/* /2007/12/30 /2007/12/31
/200? /2007 /2008
/200[78] /2007 /2008
/200[7-8] /2007 /2008
/200[^01234569] /2007 /2008
/*/*/{31,01} /2007/12/31 /2008/01/01
/*/*/3{0,1} /2007/12/30 /2007/12/31
/*/{12/31,01/01} /2007/12/31 /2008/01/01
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -e /yarn/logs
Found 5 items
-rw-r--r--   2 root root Replicated   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root Replicated     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root Replicated       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root                     0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root Replicated       2221 2023-03-11 11:10 /yarn/logs/start-all.sh
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -e /yarn/logs/had*.log
-rw-r--r--   2 root root Replicated     154525 2023-03-11 10:51 /yarn/logs/hadoop.log

ls

展示文件列表

此命令调用的是 org.apache.hadoop.fs.shell.Ls

使用 [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ ...]]

-C		仅显示文件和目录的路径
-d		只展示目录
-h   	以人类可读的方式格式化文件大小,而不是按字节数
-q   	用?代替无法打印的字符
-R  	递归地列出目录的内容
-t		按修改时间对文件排序(最近的第一次)
-S		根据文件大小排序
-r		颠倒排序顺序,配合-t -S 使用
-u		使用最近访问的时间代替(modification time)展示和排序
-e		展示路径的ec策略
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls /yarn/logs
Found 5 items
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root       2221 2023-03-11 11:10 /yarn/logs/start-all.sh

-C 只显示目录或者文件那一列

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -C /yarn/logs
/yarn/logs/hadoop-client-runtime-3.3.1.jar
/yarn/logs/hadoop.log
/yarn/logs/httpfs.log
/yarn/logs/root
/yarn/logs/start-all.sh

-d 只展示目录

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -d /yarn/logs
drwxrwxrwt   - root root          0 2023-03-11 10:51 /yarn/logs
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -C -d /yarn/logs
/yarn/logs

-h 格式化文件大小,目录大小为 0

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -h /yarn/logs
Found 5 items
-rw-r--r--   2 root root     30.2 M 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root    150.9 K 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root      2.4 K 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root      2.2 K 2023-03-11 11:10 /yarn/logs/start-all.sh

-R 递归展示目录内容

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -h -R /yarn/logs
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root
drwxrwx---   - root root          0 2023-03-06 08:03 /yarn/logs/root/bucket-logs-tfile
drwxrwx---   - root root          0 2023-02-15 17:01 /yarn/logs/root/bucket-logs-tfile/0001
drwxrwx---   - root root          0 2023-02-14 16:02 /yarn/logs/root/bucket-logs-tfile/0001/application_1676356354068_0001
-rw-r-----   2 root root    299.1 K 2023-02-14 16:02 /yarn/logs/root/bucket-logs-tfile/0001/application_1676356354068_0001/spark-31_45454

-t 根据修改时间(modification time)排序

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls /yarn/logs
Found 5 items
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root       2221 2023-03-11 11:10 /yarn/logs/start-all.sh
# 对比 时间排序
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -t /yarn/logs
Found 5 items
-rw-r--r--   2 root root       2221 2023-03-11 11:10 /yarn/logs/start-all.sh
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root

-S 根据文件大小排序

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -S /yarn/logs
Found 5 items
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r--   2 root root       2221 2023-03-11 11:10 /yarn/logs/start-all.sh
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root

-r 反向排序

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -S -r /yarn/logs
Found 5 items
drwxrwx---   - root root          0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root       2221 2023-03-11 11:10 /yarn/logs/start-all.sh
-rw-r--r--   2 root root       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r--   2 root root     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar

-e 展示路径的ec策略

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -ls -e /yarn/logs
Found 5 items
-rw-r--r--   2 root root Replicated   31717292 2023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r--   2 root root Replicated     154525 2023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r--   2 root root Replicated       2452 2023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx---   - root root                     0 2023-02-14 16:01 /yarn/logs/root
-rw-r--r--   2 root root Replicated       2221 2023-03-11 11:10 /yarn/logs/start-all.sh

df

展示文件系统的总容量,空闲和已使用大小

此命令调用的是 org.apache.hadoop.fs.shell.Df

使用 -df [-h] [ ...]

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -df /
Filesystem                   Size        Used      Available  Use%
hdfs://cdp-cluster  4936800665600  1544134656  4853417132032    0%
# 只有 available 不一样
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -df /yarn/logs
Filesystem                   Size        Used      Available  Use%
hdfs://cdp-cluster  4936800665600  1544134656  4853425569792    0%

du

展示指定文件或目录大小 单位为:bytes

此命令调用的是 org.apache.hadoop.fs.shell.Du

使用 -du [-s] [-h] [-v] [-x]

-s		展示总目录大小
-h  	人性化format文件大小
-v		展示列表头信息
-x		排除 snapshots
# 正常使用
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -du -h /yarn/logs
30.2 M   60.5 M   /yarn/logs/hadoop-client-runtime-3.3.1.jar
150.9 K  301.8 K  /yarn/logs/hadoop.log
2.4 K    4.8 K    /yarn/logs/httpfs.log
117.2 M  234.5 M  /yarn/logs/root
2.2 K    4.3 K    /yarn/logs/start-all.sh
# 展示header和格式化展示
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -du -h -v /yarn/logs
SIZE     DISK_SPACE_CONSUMED_WITH_ALL_REPLICAS  FULL_PATH_NAME
30.2 M   60.5 M                                 /yarn/logs/hadoop-client-runtime-3.3.1.jar
150.9 K  301.8 K                                /yarn/logs/hadoop.log
2.4 K    4.8 K                                  /yarn/logs/httpfs.log
117.2 M  234.5 M                                /yarn/logs/root
2.2 K    4.3 K                                  /yarn/logs/start-all.sh
# 展示header和格式化展示以及目录大小
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -du -s -h -v /yarn/logs
SIZE     DISK_SPACE_CONSUMED_WITH_ALL_REPLICAS  FULL_PATH_NAME
147.6 M  295.3 M                                /yarn/logs

count

列出文件夹数量、文件数量、内容大小

此命令调用的是 org.apache.hadoop.fs.shell.Count

使用 [-count [-q] [-h] [-v] [-t []] [-u] [-x] [-e] [-s] ...]

-q		展示目录quota信息
-h		人性化format文件大小
-v		展示列表头信息
-t		展示quota的storage type
-u		展示quota和使用率信息,没有文件数目和文件内容大小
-x		排除 snapshots
-e		展示路径的ec策略
-s		展示snapshots信息
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -count -v /yarn/logs
   DIR_COUNT   FILE_COUNT       CONTENT_SIZE PATHNAME
          69           65          154821533 /yarn/logs

展示quota信息

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -count -v -q /yarn/logs
       QUOTA       REM_QUOTA     SPACE_QUOTA REM_SPACE_QUOTA    DIR_COUNT   FILE_COUNT       CONTENT_SIZE PATHNAME
     1000000          999866    107374182400    107064539334           69           65          154821533 /yarn/logs

setfacl

通过POSIX ACL 机制,可以实现 HDFS 文件系统更精细化的权限控制

此命令调用的是 org.apache.hadoop.fs.shell.SetfaclCommand

在使用之前需要先开启 acl

<property>
        <name>dfs.permissions.enabledname>
        <value>truevalue>
    property>
    <property>
        <name>dfs.namenode.acls.enabledname>
        <value>truevalue>
    property>

使用 "[-R] [{-b|-k} {-m|-x } ]|[--set ]"

常用选项 描述
-b 删除基本 ACL 条目以外的所有条目,保留用户,组和其他以与权限位兼容
-k 删除缺省 ACL
-R 以递归方式将操作应用于所有文件和目录
-m 修改 ACL,新条目将添加到 ACL,并保留现有条目
-x 删除指定的 ACL 条目,保留其他 ACL 条目
-set 表示完全替换 ACL,丢弃所有现有条目
acl_spec 表示通过逗号分隔的 ACL 条目列表
path 要修改的文件或目录
# 将 /yarn/logs/start-all.sh 文件授权给 hadoop 用户可读、写权限。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl -m user:hadoop:rw- /yarn/logs/start-all.sh
# 清除 hadoop 用户对 /yarn/logs/start-all.sh 文件的可读、写权限。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl -x user:hadoop /yarn/logs/start-all.sh
# 清除 /yarn/logs/start-all.sh 文件基本 ACL 规则以外的所有规则。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl -b /yarn/logs/start-all.sh
# 清除 /yarn/logs/start-all.sh 目录默认 ACL 规则。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl -k /yarn/logs/start-all.sh
# 重新设置 /yarn/logs/start-all.sh 目录的 ACL 规则,此操作会丢弃所有现有规则。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl --set user::rw-,user:hadoop:rw-,group::r-x,other::r-- /yarn/logs/start-all.sh
# 以递归方式将 ACL 规则应用于 /yarn/logs/start-all.sh 目录下的所有文件和子目录中。
[root@spark-31 hadoop-3.3.1]# hdfs dfs  -setfacl -R -m user:hadoop:r-x /yarn/logs/start-all.sh
# 用来设置 /yarn/logs/start-all.sh 目录的缺省 ACL 规则。
[root@spark-31 hadoop-3.3.1]# hdfs dfs -setfacl -m default:user:hdfs:r-x /yarn/logs/start-all.sh

getfacl

getfacl 用来显示文件和目录的访问控制列表,如果目录具有默认 ACL,则 getfacl 还会显示默认 ACL。此参数用法如下:

此命令调用的是 org.apache.hadoop.fs.shell.GetfaclCommand

使用 [-R]

-R,以递归方式列出所有文件和目录的 ACL;
[root@spark-31 hadoop-3.3.1]# hdfs dfs -getfacl /yarn/logs/start-all.sh
# file: /yarn/logs/start-all.sh
# owner: root
# group: root
user::rw-
user:hive:rw-
group::r--
mask::rw-
other::r--

getmerge

将HDFS上指定目录下的所有内容合并成一个文件,并下载到本地。

此命令调用的是 org.apache.hadoop.fs.shell.Merge

使用 [-getmerge [-nl] [-skip-empty-file] ]

-nl		在每个文件的末尾添加一个新行字符。
-skip-empty-file		跳过空的文件
cat a.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
cat b.txt
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
hdfs dfs -getmerge -nl /yarn/logs/*.log merge.txt
cat merge.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

cp

将一个文件拷贝到目标地,当拷贝的是多个文件时,目标必须是一个目录,保留其原有权限

此命令调用的是 org.apache.hadoop.fs.shell.Cp

使用 [-cp [-f] [-p | -p[topax]] [-d] ... ]

-f		如果目标已存在,则覆盖该目标
-p | -p[topax] 	保留状态,参数[topax]分别表示(时间戳、所有权、权限、ACL、XAttr),无参数则不保留状态
-d 	跳过创建临时文件
hdfs dfs -cp /user/data/a.txt /user/data1/

copyFromLocal和put

从本地拷贝文件到HDFS中,如果目标已经存在,则拷贝失败,除非使用 -f

此命令调用的是 org.apache.hadoop.fs.shell.CopyFromLocal
此命令调用的是 org.apache.hadoop.fs.shell.Put

使用 [-f] [-p] [-l] [-d] [-t ] ... ]

-f		如果目标已存在,则覆盖该目标
-p		保留原有权限信息
-l 		允许DN使用lazily保存文件
-d 		跳过创建临时文件
-t 		线程数,默认为1
bin/hdfs dfs -copyFromLocal c.txt /user/data1/
bin/hdfs dfs -put c.txt /user/data1/

copyToLocal和-get

从HDFS上拷贝文件到本地,当源文件是多个的时候,目标地必须是目录

此命令调用的是 org.apache.hadoop.fs.shell.CopyToLocal
此命令调用的是 org.apache.hadoop.fs.shell.Get

使用 [-f] [-p] [-ignoreCrc] [-crc] ... ]

-f		如果目标已存在,则覆盖该目标
-p		保留原有权限信息
-ignoreCrc 		忽略CRC校验
-crc 		使用CRC校验
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -copyToLocal -f /user/data1/*.txt  ./
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -get -f /user/data1/*.txt  ./

appendToFile

将本地文件内容追加到目标文件中,如果目标文件不存在,就会自动创建。

此命令调用的是 org.apache.hadoop.fs.shell.AppendToFile

使用 ...

[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -appendToFile a.txt /user/data1/x.txt

你可能感兴趣的:(Hadoop,服务运维部署,大数据,hdfs,大数据,dfs,bash)