DFS命令使用
概览
hadoop分布式文件系统客户端命令行操作
全局变量说明
<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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root Replicated 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root Replicated 24522023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx--- - root root 02023-02-14 16:01 /yarn/logs/root
-rw-r--r-- 2 root root Replicated 22212023-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 1545252023-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] [<path> ...]]
-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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx--- - root root 02023-02-14 16:01 /yarn/logs/root
-rw-r--r-- 2 root root 22212023-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 02023-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 02023-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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx--- - root root 02023-02-14 16:01 /yarn/logs/root
drwxrwx--- - root root 02023-03-06 08:03 /yarn/logs/root/bucket-logs-tfile
drwxrwx--- - root root 02023-02-15 17:01 /yarn/logs/root/bucket-logs-tfile/0001
drwxrwx--- - root root 02023-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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx--- - root root 02023-02-14 16:01 /yarn/logs/root
-rw-r--r-- 2 root root 22212023-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 22212023-03-11 11:10 /yarn/logs/start-all.sh
-rw-r--r-- 2 root root 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
drwxrwx--- - root root 02023-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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r-- 2 root root 22212023-03-11 11:10 /yarn/logs/start-all.sh
drwxrwx--- - root root 02023-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 02023-02-14 16:01 /yarn/logs/root
-rw-r--r-- 2 root root 22212023-03-11 11:10 /yarn/logs/start-all.sh
-rw-r--r-- 2 root root 24522023-03-11 10:51 /yarn/logs/httpfs.log
-rw-r--r-- 2 root root 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root 317172922023-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 317172922023-03-11 11:09 /yarn/logs/hadoop-client-runtime-3.3.1.jar
-rw-r--r-- 2 root root Replicated 1545252023-03-11 10:51 /yarn/logs/hadoop.log
-rw-r--r-- 2 root root Replicated 24522023-03-11 10:51 /yarn/logs/httpfs.log
drwxrwx--- - root root 02023-02-14 16:01 /yarn/logs/root
-rw-r--r-- 2 root root Replicated 22212023-03-11 11:10 /yarn/logs/start-all.sh
df
展示文件系统的总容量,空闲和已使用大小
此命令调用的是
org.apache.hadoop.fs.shell.Df
类
使用
-df [-h] [<path> ...]
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -df /
Filesystem Size Used Available Use%
hdfs://cdp-cluster 4936800665600154413465648534171320320%
# 只有 available 不一样[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -df /yarn/logs
Filesystem Size Used Available Use%
hdfs://cdp-cluster 4936800665600154413465648534255697920%
du
展示指定文件或目录大小 单位为:bytes
此命令调用的是
org.apache.hadoop.fs.shell.Du
类
使用
-du [-s] [-h] [-v] [-x] <path>
-s 展示总目录大小
-h 人性化format文件大小
-v 展示列表头信息
-x 排除 snapshots
# 正常使用[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -du -h /yarn/logs30.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 [<storage type>]] [-u] [-x] [-e] [-s] <path> ...]
-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
6965154821533 /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
10000009998661073741824001070645393346965154821533 /yarn/logs
setfacl
通过POSIX ACL 机制,可以实现 HDFS 文件系统更精细化的权限控制
此命令调用的是
org.apache.hadoop.fs.shell.SetfaclCommand
类
在使用之前需要先开启 acl
<property><name>dfs.permissions.enabled</name><value>true</value></property><property><name>dfs.namenode.acls.enabled</name><value>true</value></property>
使用
"[-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]"
常用选项描述-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] <path>
-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] <src> <localdst>]
-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] <src> ... <dst>]
-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 <thread count>] <localsrc> ... <dst>]
-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] <src> ... <localdst>]
-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
类
使用
<localsrc> ... <dst>
[root@spark-31 hadoop-3.3.1]# bin/hdfs dfs -appendToFile a.txt /user/data1/x.txt
版权归原作者 笑起来贼好看 所有, 如有侵权,请联系我们删除。