> 文章列表 > HDFS 常用Shell命令

HDFS 常用Shell命令

HDFS 常用Shell命令

HDFS有很多shell命令,其中,fs命令可以说是HDFS最常用的命令,利用该命令可以查看HDFS文件系统的目录结构、上传和下载数据、创建文件等。该命令的用法为:
hadoop fs [genericOptions] [commandOptions]
Hadoop中有三种Shell命令方式:

  • hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统
  • hadoop dfs只能适用于HDFS文件系统
  • hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统

具体如下:

显示path指定的文件的详细信息:
hadoop fs -ls <path>

ls命令的递归版本:
hadoop fs -ls -R <path>

将path指定的文件的内容输出到标准输出(stdout):
hadoop fs -cat <path>

将path指定的文件所属的组改为group,使用-R对path指定的文件夹内的文件进行递归操作。这个命令只适用于超级用户:
hadoop fs -chgrp [-R] group <path>

改变path指定的文件所有者,-R用于递归改变文件夹内的文件所有者,这个命令只适用于超级用户:
hadoop fs -chown [-R] [owner] [:[group]] <path>

改变path指定的文件的权限更改为mode。这个命令只适用于超级用户和文件所有者:
hadoop fs -chmod [-R] <mode> <path>

将path指定的文件最后1KB的内容输出到标准输出(stdout)上,-f选项用于持续检测新添加到文件中的内容:
hadoop fs -tail [-f] <path>

以指定的格式返回path指定的文件的相关信息。当不指定format的时候,返回文件path的创建日期:
hadoop fs -stat [format] <path>

创建一个path指定的空文件:
hadoop fs -touchz <path>

创建paths指定的一个或多个文件夹,-p选项用于递归创建子文件夹:
hadoop fs -mkdir [-p] <paths>

将本地源文件localsrc复制到路径dst指定的文件或文件夹中:
hadoop fs -copyFromLocal <path> <dst>

将目标文件target复制到本地文件或文件夹localdst中,可用ignorecrc选项复制CRC校验失败的文件,使用-crc选项赋值文件以及CRC信息:
hadoop fs -copyToLocal [-ignorecrc] [-crc] <target> <localdst>

将文件从源路径src复制到目标路径dst:
hadoop fs -cp <src> <dst>

显示path指定的文件或文件夹中所有文件的大小:
hadoop fs -du <path>

清空回收站:
hadoop fs -expunge

复制src指定的文件到本地文件系统localdst指定的文件或文件夹,可用-ignorecrc选项复制CRC校验失败的文件,使用-crc选项复制文件以及CRC信息:
hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>

对src指定的源目录中的所有文件进行合并,写入localdst指定的本地文件。-nl是可选的,用于指定在每个文件结尾添加一个换行符:
hadoop fs -getmerge [-nl] <src> <localdst>

从本地文件系统中复制localsrc指定的单个或多个源文件到dst指定的目标文件系统中,也支持从标准输入(stdin)中读取输入并写入目标文件系统:
hadoop fs -put <localsrc> <dst>

与 put 命令功能相同,但是文件上传结束后会从本地文件系统中删除localsrc指定的文件:
hadoop fs -moveFromLocal <localsrc> <dst>

将文件从源路径src移动到目标路径dst:
hadoop fs -mv <src> <dest>

删除path指定的文件,只删除非空目录和文件
hadoop fs -rm <path>

删除path指定的文件夹及其下的所有文件,-r选项表示递归删除子目录:
hadoop fs -rm -r <path>

改变path指定的文件的副本系数,-R选项用于递归改变目录下所有文件的副本系数:
hadoop fs -setrep [-R] <path>

检查path指定的文件或文件夹的相关信息:
hadoop fs -test -[ezd] <path>
不同选项的作用如下:
①-e 检查文件是否存在,如果存在则返回0,否则返回1
②-z 检查文件是否是0字节,如果是则返回0,否则返回1
③-d 如果路径是个目录,则返回1,否则返回0

将path指定的文件输出为文本格式,文件的格式也允许是zip和TextRecordInputStream等:
hadoop fs -text <path>