<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
展示文件列表
此命令调用的是 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
展示文件系统的总容量,空闲和已使用大小
此命令调用的是 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%
展示指定文件或目录大小 单位为: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
列出文件夹数量、文件数量、内容大小
此命令调用的是 org.apache.hadoop.fs.shell.Count
类
使用 [-count [-q] [-h] [-v] [-t [
-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
通过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
常用选项 | 描述 |
---|---|
-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 用来显示文件和目录的访问控制列表,如果目录具有默认 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--
将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
将一个文件拷贝到目标地,当拷贝的是多个文件时,目标必须是一个目录,保留其原有权限
此命令调用的是 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/
从本地拷贝文件到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/
从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 ./
将本地文件内容追加到目标文件中,如果目标文件不存在,就会自动创建。
此命令调用的是 org.apache.hadoop.fs.shell.AppendToFile
类
使用
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -appendToFile a.txt /user/data1/x.txt