ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

hdfs命令行指南

2021-09-20 23:05:33  阅读:217  来源: 互联网

标签:指南 hdfs 文件 hadoop dfs 用法 user 命令行


Hadoop包括各种shell类命令,它们直接与HDFS和Hadoop支持的其他文件系统交互。 bin/hdfs dfs -help列出了Hadoop shell支持的命令。 此外,命令bin/hdfs dfs -help command-name可以显示命令的更详细的帮助。 这些命令支持大多数普通的文件系统操作,如复制文件、更改文件权限等。 它还支持一些HDFS的特定操作,如更改文件的副本数。

appendToFile

作用:将本地文件或stdin追加到某个文件的末尾

用法:

hdfs dfs -appendToFile localfile /user/hadoop/hadoopfile
hdfs dfs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
hdfs dfs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
hdfs dfs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile

cat

作用:将源文件输出到stdout

用法:

hdfs dfs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hdfs dfs -cat file:///file3 /user/hadoop/file4

checksum

作用:返回文件的checksum信息

用法:

hdfs dfs -checksum hdfs://nn1.example.com/file1
hdfs dfs -checksum file:///etc/hosts

chgrp

作用:更改文件的组关联。用户必须是文件的所有者,否则就是超级用户。

用法:

 hadoop fs -chgrp [-R] GROUP URI [URI ...]

chmod

作用:修改文件/文件夹权限。用户必须是文件的所有者,否则就是超级用户。

用法:

hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]

chown

作用:修改文件/文件夹所属用户。用户必须是文件的所有者,否则就是超级用户。

用法:

hdfs dfs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

copyFromLocal

作用:将本地文件拷贝到hdfs上

可选参数:

  • -p 保留访问和修改时间、所有权和权限。 (假设权限可以跨文件系统传播)

  • -f 假如目标文件存在的话则覆盖

  • -l 允许DataNode将文件延迟持久化到磁盘,强制复制因子为1。 这个参数将导致耐用性降低。 小心使用。

  • -d 跳过创建后缀为. _copying_的临时文件。

用法:

hdfs dfs -copyFromLocal <localsrc> URI

copyToLocal

作用:与copyFromLocal相反

用法:

hdfs dfs -copyToLocal [-ignorecrc] [-crc] URI <localdst>

count

作用:计算路径下匹配指定文件模式的目录、文件和字节数。 获取配额和使用量。 带有-count的输出列是:DIR_COUNT、FILE_COUNT、CONTENT_SIZE、PATHNAME

-u和-q选项控制输出包含哪些列。 -q表示显示配额,-u限制输出仅显示配额和使用情况。

带-count -q的输出列为:QUOTA、REMAINING_QUOTA、SPACE_QUOTA、REMAINING_SPACE_QUOTA、DIR_COUNT、FILE_COUNT、CONTENT_SIZE、PATHNAME

带-count -u的输出列为:QUOTA、REMAINING_QUOTA、SPACE_QUOTA、REMAINING_SPACE_QUOTA、PATHNAME

-t选项显示每种存储类型的配额和使用情况。 如果没有给出-u或-q选项,则忽略-t选项。 -t选项中可以使用的参数列表(除了参数"“不区分大小写):”"," all ", " ram_disk ", " ssd ", " disk “或” archive "。

-h选项以可读的格式显示大小。

-v选项显示标题行。

选项-x将从结果计算中排除快照。 如果没有-x选项(默认),结果总是从所有INode计算,包括给定路径下的所有快照。 如果给出了-u或-q选项,则忽略-x选项。

e选项显示每个文件的擦除编码策略。

带有-count -e的输出列是:DIR_COUNT, FILE_COUNT, CONTENT_SIZE, ERASURECODING_POLICY, PATHNAME

ERASURECODING_POLICY是文件的策略名称。 如果在该文件上设置了擦除编码策略,它将返回该策略的名称。 如果没有设置擦除编码策略,则返回“Replicated”,即使用复制存储策略。

用法:

hdfs dfs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hdfs dfs -count -q hdfs://nn1.example.com/file1
hdfs dfs -count -q -h hdfs://nn1.example.com/file1
hdfs dfs -count -q -h -v hdfs://nn1.example.com/file1
hdfs dfs -count -u hdfs://nn1.example.com/file1
hdfs dfs -count -u -h hdfs://nn1.example.com/file1
hdfs dfs -count -u -h -v hdfs://nn1.example.com/file1
hdfs dfs -count -e hdfs://nn1.example.com/file1

cp

作用:将文件从源复制到目标。 该命令还允许有多个源,在这种情况下,目标必须是一个目录。

可选参数:

  • 如果目标已经存在,-f选项将覆盖它。

  • -p选项将保留文件属性topx。 如果-p没有指定参数,则保留时间戳、所有权和权限。 如果指定了-pa,则保留权限,因为ACL是权限的超集。 确定是否保留原始名称空间扩展属性与-p标志无关。

用法:

hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2
hdfs dfs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

createSnapshot

参考:https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

deleteSnapshot

参考:https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

df

作用:显示可用空间

可选参数:

  • -h选项将以“可读”的方式格式化文件大小(例如用64.0m代替67108864)

用法:

hdfs dfs -df /user/hadoop/dir1

du

作用:显示给定目录中包含的文件和目录的大小或文件的长度(如果只是一个文件)。

可选参数:

  • -s选项将显示文件长度的汇总摘要,而不是单个文件。 如果没有-s选项,计算将从给定路径深入1层。

  • -h选项将以“可读”的方式格式化文件大小(例如用64.0m代替67108864)

  • -v选项将列的名称显示为标题行。

  • -x选项将从结果计算中排除快照。 如果没有-x选项(默认),结果总是从所有inode计算,包括给定路径下的所有快照。

用法:

hdfs dfs -du /user/hadoop/dir1 /user/hadoop/file1 hdfs://nn.example.com/user/hadoop/dir1

dus

该命令已经废弃,可用hdfs dfs -du -s替代。

作用:显示文件长度的摘要。

用法:

hdfs dfs -dus <args>

expunge

作用:从垃圾目录中永久删除旧于保留阈值的检查点中的文件,并创建新的检查点。

当创建检查点时,最近删除的垃圾文件被移动到检查点下。 在检查点中比fs.trash.interval更老的文件将在下一次调用-expunge命令时被永久删除。

如果文件系统支持该特性,用户可以配置为通过存储为fs.trash.checkpoint.interval(在core-site.xml中)的参数周期性地创建和删除检查点。 该值应该小于或等于fs.trash.interval。

用法:

hdfs dfs -expunge

find

作用:查找与指定表达式匹配的所有文件,并将选择的操作应用于它们。 如果没有指定路径,则默认为当前工作目录。 如果没有指定表达式,则默认为-print。

下面的主要表达式是可以识别的:

  • name 模式

  • iname 模式

如果文件的基名与使用标准文件系统通配符的模式匹配,则计算为true。 如果使用-iname,则匹配不区分大小写。

-print

-print0

总是为真。 导致将当前路径名写入标准输出。 如果使用-print0表达式,则会附加一个ASCII NULL字符。

下列为支持的表达式

  • expression -a expression
    expression -and expression
    expression expression

用于连接两个表达式的逻辑与运算符。 如果两个子表达式都返回true则返回true。 由两个表达式并置而隐含的,因此不需要明确指定。 如果第一个表达式失败,则不会应用第二个表达式。

用法:

hdfs dfs -find / -name test -print

get

作用:将文件复制到本地文件系统。 通过-ignorecrc选项可以复制CRC检查失败的文件。 可以使用-crc选项复制文件和crc。

可选参数:

  • -p:保留访问和修改时间、所有权和权限。 (假设权限可以跨文件系统传播)

  • -f:如果目标已经存在,则覆盖目标。

  • -ignorecrc:跳过对下载的文件的CRC检查。

  • -crc:为下载的文件写入CRC校验和。

用法:

hdfs dfs -get /user/hadoop/file localfile
hdfs fs -get hdfs://nn.example.com/user/hadoop/file localfile

getfacl

作用:显示文件和目录的访问控制列表。 如果目录有默认ACL,那么getfacl也会显示默认ACL。

可选参数:

  • -R:递归列出所有文件和目录的acl。

  • path:要列出的文件或目录。

用法:

hdfs fs -getfacl /file

hdfs fs -getfacl -R /dir

getfattr

作用:显示文件或目录的扩展属性名称和值(如果有的话)。

可选参数:

  • -R:递归地列出所有文件和目录的属性。

  • -n name:转储命名扩展属性值。

  • -d:转储所有与路径名相关的扩展属性值。

  • -e encoding:检索后对值进行编码。 有效的编码是" text ", " hex “和” base64 “。 编码为文本字符串的值用双引号(”)括起来,编码为十六进制和base64的值分别以0x和0作为前缀。

  • path:文件或目录。

用法:

hdfs dfs -getfattr -d /file
hdfs dfs -getfattr -R -n user.myAttr /dir

getmerge

作用:将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件。 可以选择-nl来支持在每个文件的末尾添加换行符(LF)。 -skip-empty-file可以用来避免在空文件中出现不必要的换行符。

用法:

hdfs dfs -getmerge -nl /src /opt/output.txt
hdfs dfs -getmerge -nl /src/file1.txt /src/file2.txt /output.txt

head

作用:将文件的第一个kb显示到标准输出。

用法:

hdfs dfs -head pathname

help

作用:返回该命令使用方法

用法:

hdfs dfs -help

ls

作用:

可选参数:

  • -C:只显示文件和目录的路径。

  • -d:目录以普通文件的形式列出。

  • -h:以可读的方式格式化文件大小(例如64.0m而不是67108864)。

  • -q:打印? 而不是不可打印字符。

  • -R 递归列出遇到的子目录。

  • -t:按修改时间(最近的第一个)对输出进行排序。

  • -S:按文件大小对输出进行排序。

  • -r:颠倒排序顺序。

  • -u:使用访问时间而不是修改时间来显示和排序。

  • -e:只显示文件和目录的擦除编码策略。

用法:

hdfs dfs -ls /user/hadoop/file1
hdfs dfs -ls -e /ecdir

lsr

该命令已经弃用,可使用hdfs dfs -ls -R替代

mkdir

作用:创建文件夹

可选参数:

  • -p 与unix类似用法

用法:

hdfs dfs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hdfs dfs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir

moveFromLocal

作用:类似于put命令,除了源localsrc在复制后被删除。

用法:

hdfs dfs -moveFromLocal <localsrc> <dst>

moveToLocal

作用:显示“尚未实现”消息。

用法:

hdfs dfs -moveToLocal [-crc] <src> <dst>

mv

作用:将文件从源移动到目标。 该命令还允许多个源,在这种情况下,目标需要是一个目录。 不允许在文件系统之间移动文件。

用法:

hdfs dfs -mv /user/hadoop/file1 /user/hadoop/file2
hdfs dfs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1

put

作用:从本地文件系统复制单个src或多个src到目标文件系统。 如果源文件系统设置为" - ",还可以从stdin读取输入并写入目标文件系统。

如果文件已经存在,复制将失败,除非指定-f标志。

  • -p:保留访问和修改时间、所有权和权限。 (假设权限可以跨文件系统传播)

  • -f:如果目标已经存在,则覆盖目标。

  • -l: 允许Datanode惰性加载文件到磁盘,强制副本数为1。 这个参数将导致耐久性降低。 小心使用。

  • -d:跳过创建后缀为。_copying_的临时文件。

hdfs dfs -put localfile /user/hadoop/hadoopfile
hdfs dfs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
hdfs dfs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile
hdfs dfs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.

renameSnapshot

参考:https://hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

rm

作用:删除指定的文件。

如果启用了trash,文件系统会将删除的文件移动到一个trash目录(由FileSystem#getTrashRoot给出)。

目前,垃圾功能在默认情况下是禁用的。 用户可以通过为参数fs.trash.interval设置一个大于零的值(在core-site.xml中)来启用垃圾。

请参阅删除垃圾文件。

可选参数:

  • -f: 如果文件不存在,-f选项将不会显示诊断消息或修改退出状态以反映错误。

  • -R: 选项递归地删除目录及其下的所有内容。

  • -r: 选项等价于-R。

  • -skipTrash选项将绕过垃圾,如果启用,并立即删除指定的文件。 当需要从配额超标的目录中删除文件时,这一点非常有用。

  • -safely选项在删除文件总数大于hadoop.shell.delete.limit.num.files(在core-site.xml中,默认值:100)的目录之前需要进行安全确认。 它可以与-skipTrash一起使用,以防止大目录的意外删除。 当递归遍历大目录以计算确认之前要删除的文件数量时,预计会有延迟。

用法:

hdfs dfs -rm hdfs://nn.example.com/file /user/hadoop/emptydir

rmdir

作用:删除目录

用法:

hdfs dfs -rmdir /user/hadoop/emptydir

rmr

该命令已经过时了,可用hdfs dfs -rm -r代替

setfacl

作用:设置文件和目录的访问控制列表。

可选参数:

  • -b:删除除base ACL外的所有ACL项。 为了与权限位兼容,保留用户、组和其他的条目。

  • -k:删除缺省ACL。

  • -R:递归地对所有文件和目录应用操作。

  • -m:修改ACL。 新的表项被添加到ACL中,现有的表项被保留。

  • -x:删除指定的ACL表项。 其他ACL表项保留。

  • –set:完全替换ACL,丢弃所有已有的表项。 acl_spec必须包含用户、组和其他条目,以便与权限位兼容。

  • acl_spec:逗号分隔的ACL表项。

  • path:要修改的文件或目录。

用法:

hdfs dfs -setfacl -m user:hadoop:rw- /file
hdfs dfs -setfacl -x user:hadoop /file
hdfs dfs -setfacl -b /file
hdfs dfs -setfacl -k /dir
hdfs dfs -setfacl --set user::rw-,user:hadoop:rw-,group::r--,other::r-- /file
hdfs dfs -setfacl -R -m user:hadoop:r-x /dir
hdfs dfs -setfacl -m default:user:hadoop:r-x /dir

setrep

作用:修改文件的副本数。 如果path是一个目录,那么该命令递归地更改以path为根的目录树下所有文件的副本数。 执行此命令时将忽略EC文件。

可选参数:

  • -w 标志请求命令等待复制完成。 这可能需要很长时间。

  • -R 为了向后兼容,可以接受-R标志。 它没有效果。

用法:

hdfs dfs -setrep -w 3 /user/hadoop/dir1

stat

作用:以指定的格式打印关于 的文件/目录的统计信息。 格式接受八进制(%a)和符号(%a)权限,文件大小以字节为单位(%b),类型(%F),所有者的组名(%g),名称(%n),块大小(%o),复制(%r),所有者的用户名(%u),访问日期(%x, %x),修改日期(%y, %y)。 %x和%y显示UTC日期为" yyyy-MM-dd HH:mm:ss ", %x和%y显示UTC日期1970年1月1日以来的毫秒数。 如果未指定格式,则默认使用%y。

用法:

hdfs dfs -stat "type:%F perm:%a %u:%g size:%b mtime:%y atime:%x name:%n" /file

tail

作用:显示文件最后千字节到标准输出。

可选参数:

  • -f选项将随着文件的增长输出附加的数据,就像在Unix中一样。

用法:

hdfs dfs -tail pathname

test

可选参数以及作用

  • -f选项将随着文件的增长输出附加的数据,就像在Unix中一样。

  • -d: f路径为目录,返回0。

  • -e:如果路径存在,返回0。

  • -f:如果路径是文件,则返回0。

  • -s:如果路径非空,返回0。

  • -r:如果路径存在且具有读权限,则返回0。

  • -w:如果路径存在且具有写权限,则返回0。

  • -z:如果文件长度为0,则返回0。

用法:

hdfs dfs -test -e filename

text

作用:获取源文件并以文本格式输出该文件。 允许的格式是zip和TextRecordInputStream。

用法:

hadoop fs -text <src>

touch

作用:将URI指定的文件的访问和修改时间更新为当前时间。 如果该文件不存在,则在URI上创建一个长度为零的文件,并将当前时间作为该URI的时间戳。

可选参数:

  • 使用-a选项只更改访问时间

  • 使用-m选项只更改修改时间

  • 使用-t选项指定时间戳(格式为yyyyMMddHHmmss)而不是当前时间

  • 如果文件不存在,使用-c选项不创建文件

用法:

hdfs dfs -touch pathname
hdfs dfs -touch -m -t 20180809230000 pathname
hdfs dfs -touch -t 20180809230000 pathname
hdfs dfs -touch -a pathname

touchz

作用:创建一个零长度的文件。 如果文件的长度不为零,则返回错误。

用法:

hdfs dfs -touchz pathname

truncate

作用:将匹配指定文件模式的所有文件截断为指定的长度。

可选参数:

  • -w 如果有必要,-w标志请求命令等待块恢复完成。 如果没有-w标志,在进行恢复时,文件可能会保持未关闭一段时间。 在此期间,文件不能重新打开以便追加。

用法:

hdfs dfs -truncate 55 /user/hadoop/file1 /user/hadoop/file2
hdfs dfs -truncate -w 127 hdfs://nn1.example.com/user/hadoop/file1

标签:指南,hdfs,文件,hadoop,dfs,用法,user,命令行
来源: https://blog.csdn.net/weixin_39636364/article/details/120396748

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有