调用文件系统(FS)Shell命令应用 bin / hadoop fs 的形式。(可以将hadoop的bin目录配置环境变量)
所有的的FS shell命令使用URI路径作为参数.URI格式是scheme://权限/路径。对HDFS文件系统,方案是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认方案。一个HDFS文件或目录比如/ parent / child可以表示成hdfs:// namenode:namenodeport / parent / child,或者更简单的/ parent / child(假设你配置文件中的默认值是namenode:namenodeport)。
用法:hadoop fs -mkdir [-p]
将路径uri作为参数并创建目录。
选项:
-p选项行为很像Unix mkdir -p,沿路径创建父目录。
例:
hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir
用法:hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u]
选项:
-C:仅显示文件和目录的路径。
-d:目录列为纯文件。
-h:以人类可读的方式格式化文件大小(例如64.0m而不是67108864)。
-q:打印?而不是不可打印的字符。
-R:递归列出遇到的子目录。
-t:按修改时间排序输出(最近的第一个)。
-S:按文件大小排序输出。
-r:反转排序顺序。
-u:使用访问时间而不是修改时间进行显示和排序。
对于文件,ls使用以下格式返回文件的stat:权限number_of_replicas userid groupid filesize modification_date modification_time filename
对于目录,它返回其直接子节点的列表,如在Unix中。目录列为:权限userid groupid modification_date modification_time dirname
默认情况下,目录中的文件按文件名排序。
例:hadoop fs -ls / user / hadoop / file1
用法:hadoop fs -put [-f] [-p] [-l] [-d] < local file or dir >…< hdfs dir >
将单个src或多个srcs从本地文件系统复制到目标文件系统。如果源设置为“ - ”,还从stdin读取输入并写入目标文件系统。如果文件已存在,则复制失败,除非给出-f标志。
选项:
-p:保留访问和修改时间,所有权和权限。(假设权限可以跨文件系统传播)
-f:覆盖目标(如果已存在)。
-l:允许DataNode延迟将文件持久保存到磁盘,强制复制因子为1.此标志将导致持久性降低。小心使用。
-d:使用后缀._COPYING_跳过临时文件的创建。
例子:
hadoop fs -put localfile / user / hadoop / hadoopfile
hadoop fs -put -f localfile1 localfile2 / user / hadoop / hadoopdir
hadoop fs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile 从stdin读取输入。
使用方法:hadoop fs -copyFromLocal URI
除了限定源路径是一个本地文件外,和把命令相似。
用法:hadoop fs -get [-ignorecrc] [-crc] [-p] [-f]
将文件复制到本地文件系统。可以使用-ignorecrc选项复制CRC校验失败的文件。可以使用-crc选项复制文件和CRC。
例:
hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI
除了限定目标路径是一个本地文件外,和GET命令类似。
使用方法:hadoop fs -cp URI [URI …]
将文件从源路径复制到目标路径这个命令允许有多个源路径,此时目标路径必须是一个目录。
示例:
hadoop fs -cp /user/hadoop /file / user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir
用法:hadoop fs -mv URI [URI …]
将文件从源移动到目标。此命令允许多个源,在这种情况下,目标需要是目录。不允许跨文件系统移动文件。
例:
hadoop fs -mv / user / hadoop / file1 / user / hadoop / file2
hadoop fs -mv hdfs://nn.example.com/file1 hdfs://nn.example.com/file2 hdfs://nn.example.com/file3 hdfs://nn.example.com/dir1
退出代码:
用法:hadoop fs -du [-s] [-h] [-x] URI [URI …]
显示给定目录中包含的文件和目录的大小或文件的长度,以防它只是一个文件。
选项:
-s选项将导致显示文件长度的汇总摘要,而不是单个文件。如果没有-s选项,则通过从给定路径向上移动1级来完成计算。
-h选项将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)
-x选项将从结果计算中排除快照。如果没有-x选项(默认),则始终从所有INode计算结果,包括给定路径下的所有快照。
du返回三列,格式如下:
size disk_space_consumed_with_all_replicas full_path_name
例:
hadoop fs -du / user / hadoop / dir1 / user / hadoop / file1 hdfs://nn.example.com/user/hadoop/dir1
用法:hadoop fs -text
获取源文件并以文本格式输出文件。允许的格式为zip和TextRecordInputStream。
使用方法:hadoop fs -cat URI [URI …]
将路径指定文件的内容输出到stdout。
示例:
hadoop fs -cat hdfs://host1:port1/file1 hdfs://host2:port2/file2
hadoop fs -cat file:///file3/user/hadoop/file4
使用方法:hadoop fs -chmod [-R]
改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。
使用方法:hadoop fs -chown [-R] [OWNER] [:[GROUP]] URI [URI]
改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。
用法:hadoop fs -df [-h] URI [URI …]
显示可用空间。
选项:
-h选项将以“人类可读”的方式格式化文件大小(例如64.0m而不是67108864)
例:hadoop dfs -df / user / hadoop / dir1
用法:hadoop fs -rm [-f] [-r | -R] [-skipTrash] [-safely] URI [URI …]
删除指定为args的文件。
如果启用了垃圾箱,则文件系统会将已删除的文件移动到垃圾箱目录(由FileSystem#getTrashRoot提供)。
目前,默认情况下禁用垃圾箱功能。用户可以通过为参数fs.trash.interval(在core-site.xml中)设置大于零的值来启用垃圾。
选项:
如果文件不存在,-f选项将不显示诊断消息或修改退出状态以反映错误。
-R选项以递归方式删除目录及其下的任何内容。
-r选项等效于-R。
-skipTrash选项将绕过垃圾桶(如果已启用),并立即删除指定的文件。当需要从超配额目录中删除文件时,这非常有用。
-safely选项在删除目录之前需要安全确认,文件总数大于hadoop.shell.delete.limit.num.files(在core-site.xml中,默认值:100)。它可以与-skipTrash一起使用,以防止意外删除大目录。当递归地遍历大目录以计算在确认之前要删除的文件的数量时,预期延迟。
例:hadoop fs -rm hdfs://nn.example.com/file/user/hadoop/emptydir