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,则匹配不区分大小写。
-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
作用:以指定的格式打印关于\<path>的文件/目录的统计信息。 格式接受八进制(%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
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/306/