标签:
概述:
文件系统(FS)Shell包含各种类-Shell的命令,直接和Hadoop分布式文件系统(HDFS)交互,也支持对其他文件系统的支持,例如:本地文件系统FS,HFTP FS,S3 FS,和其他。FS Shell的调用:
bin/hadoop fs <args>
所有的FS shell命令都要带URI路径作为参数,URI的格式是:scheme://authority/path。如果是HDFS,则scheme是hdfs,如果是本地文件系统,则scheme是file。
scheme和authorty是可选的,如果没有指定,默认的scheme是在配置文件中指定的。一个HDFS文件或目录如:/parent/child用HDFS表示,则是:hdfs://parent/child或者简单的写成/parent/child(但是前提条件是你配置文件指向的是hdfs://namenodehost)。
大多数的FS shell命令,其实和linux是对应的。不同之处每个命令都有具体的描述,错误信息会通过错误输出stderr,其他信息通过stdout输出。
如果使用hdfs,那么hdfs dfs和hadoop fs是类似的。
使用: hadoop fs -appendToFile <localsrc> ... <dst>
将一个本地文件系统的源文件或多个源文件追加到目标文件系统,也可以读取标准输入的数据,追加到目标文件系统。
hadoop fs -appendToFile localfile /user/hadoop/hadoopfile 将本地文件localfile追加到目标文件系统/user/hadoop/hadoopfile hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile 将本地文件localfile1和2追加到目标文件系统/user/hadoop/hadoopfile hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile 将本地文件localfile追加到指定目标文件系统的/user/hadoop/hadoopfile hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile 从标准输入读取数据
返回值:
返回0则成功,1则失败。
使用: hadoop fs -cat URI [URI ...]
将指定URI的内容用标准输出stdout输出。
例子:
hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2 hadoop fs -cat file:///file3 /user/hadoop/file4
返回值:
返回0则成功,1则失败。
返回文件的校验和信息。
例子:
[root@nn1 bin]# hadoop fs -checksum file:///usr/apache/hadoop-2.4.1/bin/1.txt file:///usr/apache/hadoop-2.4.1/bin/2.txt file:///usr/apache/hadoop-2.4.1/bin/1.txt NONE file:///usr/apache/hadoop-2.4.1/bin/2.txt NONE [root@nn1 bin]# hadoop fs -checksum hdfs://10.0.1.78:8020/test1 /apps/hive/install/hive-exec-0.13.1.jar hdfs://10.0.1.78:8020/test1 MD5-of-0MD5-of-512CRC32C 0000020000000000000000008f708c9e4a4ec19d554a96c72b655932 /apps/hive/install/hive-exec-0.13.1.jar MD5-of-0MD5-of-512CRC32C 00000200000000000000000060814965c82060d526756df03bf81383
使用: hadoop fs -chgrp [-R] GROUP URI [URI ...]
改变文件组,这个用户必须是文件的拥有者,或者是超级管理员。
参数
使用: hadoop fs -chmod [-R] <MODE[,MODE]... | OCTALMODE> URI [URI ...]
改变文件的的权限,这个用户必须是文件的拥有者,或者是超级管理员。
参数
使用: hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]
改变文件的拥有者. 这个游湖
Options
使用: hadoop fs -copyFromLocal <localsrc> URI
从本地文件系统考本到集群上,出了资源文件必须是本地文件之外,和put命令类似。
参数:
[root@nn1 bin]# cat 1.txt 1111 [root@nn1 bin]# cat 2.txt 22222222 [root@nn1 bin]# hadoop fs -copyFromLocal 1.txt /fish/1.txt //将本地文件拷贝到HDFS的文件/fish/1.txt [root@nn1 bin]# hadoop fs -cat /fish/1.txt //查看 1111 [root@nn1 bin]# hadoop fs -copyFromLocal -f 2.txt /fish/1.txt //加-f参数覆盖HDFS的文件/fish/1.txt [root@nn1 bin]# hadoop fs -cat /fish/1.txt //查看,是文件2.txt的内容 22222222
使用: hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>
将集群文件拷贝到本地文件系统。除了目标路径仅限于本地文件,和get命令类似。 -ignorecrc 选项复制CRC校验失败的文 件。使用-crc 选项复制文件以及CRC信息。
使用: hadoop fs -count [-q] [-h] [-v] <paths>
计算目录下文件和目录的数量,大小情况,使用-count的输出项有:DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME
使用-count -q的输出项有: QUOTA, REMAINING_QUATA, SPACE_QUOTA, REMAINING_SPACE_QUOTA, DIR_COUNT, FILE_COUNT, CONTENT_SIZE, PATHNAME
-h option shows sizes in human readable format.
-v 多显示一个标题行(hadoop-2.4.1没有参数)
[root@nn1 bin]# hadoop fs -count -h -count: Illegal option -h Usage: hadoop fs [generic options] -count [-q] <path> ...例子:
返回值:
返回0则成功,-1则失败。
使用: hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>
从源文件拷贝到目标文件,这个命令允许多个源,目标路径必须是一个目录。
参数:
例子:
//HDFS文件拷贝到本地文件系统 [root@nn1 bin]# hadoop fs -cp /apps/tez-0.4.1/tez-api-0.4.1-incubating.jar file:///home [root@nn1 bin]# ll /home/ total 748 drwx------ 2 azkaban hadoop 4096 Aug 21 2014 azkaban drwx------. 11 hadoop hadoop 4096 Jul 30 09:48 hadoop drwxr-xr-x 4 root root 4096 Jul 22 12:40 root -rw-r--r-- 1 root root 752262 Aug 7 14:59 tez-api-0.4.1-incubating.jar //HDFS文件拷贝到HDFS [root@nn1 bin]# hadoop fs -cp /apps/tez-0.4.1/tez-api-0.4.1-incubating.jar /fish/ [root@nn1 bin]# hadoop fs -ls /fish/ Found 4 items -rw-r--r-- 3 root supergroup 894 2015-08-07 12:31 /fish/3.txt -rw-r--r-- 3 fish supergroup 193 2015-04-27 20:35 /fish/multi.txt drwxr-xr-x - hadoop supergroup 0 2015-04-28 10:32 /fish/out -rw-r--r-- 3 root supergroup 752262 2015-08-07 15:00 /fish/tez-api-0.4.1-incubating.jar //本地文件拷贝到本地文件系统 [root@nn1 bin]# hadoop fs -cp file:///home/tez-api-0.4.1-incubating.jar file:///usr/返回值:
返回0则成功,-1则失败。
使用: hadoop fs -df [-h] URI [URI ...]
显示空闲空间
参数:
例子:
[root@nn1 bin]# hadoop fs -df -h /fish Filesystem Size Used Available Use% hdfs://nns 1.3 T 360.5 G 848.8 G 26% //hdfs://nns文件系统,集群中总共有1.3T的空间,使用了360G,可以的还有848.8G,使用了百分之26%
使用: hadoop fs -du [-s] [-h] URI [URI ...]
显示文件和目录的大小,如果是目录则是该目录中所有文件的大小,如果是单个文件,则显示该文件的小大
参数:例子:
返回值:返回0则成功,-1则失败。
使用: hadoop fs -dus <args>
显示一个文件长度的摘要.
Note: 该命令已经过期,使用hadoop fs -du -s替代。
使用: hadoop fs -expunge
清空垃圾箱.
(官方文档有,Hadoop2.4.1不存在这个命令)
使用: hadoop fs -find <path> ... <expression> ...
查找所有匹配指定表达式的文件,并且将选定的操作应用于它们。如果没有路径被指定,那么默认查找当前工作目录,如果没有指定表达式, 默认是: -print
例子:hadoop fs -find / -name test -print
返回值:返回0则成功,-1则失败。
使用: hadoop fs -get [-ignorecrc] [-crc] <src> <localdst>
拷贝文件到本地系统,使用通过“-ignorecrc”选项校验失败的文件,使用“-crc”选项,则可以拷贝文件和CRC信息。
例子:
使用: hadoop fs -getfacl [-R] <path>
展示文件或目录的ACL(访问控制列表)信息。如果目录有默认的ACL,那么也会展示默认的ACL。
参数:
例子:
使用: hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
设置文件和目录的控制列表(ACLs)。
参数:
(官方文档有,Hadoop2.4.1不存在这个命令)
使用: hadoop fs -getfattr [-R] -n name | -d [-e en] <path>
显示文件或目录的扩展属性的name和value(如果存在的话)。
参数:
例子:
返回0的成功和非零则错误。
(官方文档有,Hadoop2.4.1不存在这个命令)
使用: hadoop fs -setfattr -n name [-v value] | -x name <path>
为文件或者目录设置一个扩展属性:name和value。
参数:
例子:
使用: hadoop fs -getmerge <src> <localdst> [addnl]
以一个源目录和一个本地目标文件作为输入,并且将源目录中所有的文件连接成本地目标文件。addnl是可选的,用于在每个文件结尾添加一个换行符。
//将HDFS的/fish文件夹的文件,合并到本地/home/4.txt文件。 hadoop fs -getmerge /fish fish:///home/4.txt
使用: hadoop fs -help
返回使用说明
使用: hadoop fs -ls [-d] [-h] [-R] [-t] [-S] [-r] [-u] <args>
参数:
ls命令会返回一下文件的状态:
permissions(权限) number_of_replicas(副本数量) userid(用户ID) groupid(分组ID) filesize(文件大小) modification_date(修改日期) modification_time(修改时间) filename(文件名)
对于目录,ls会返回目录中的第一级内容,显示格式如下
permissions(权限) userid(用户ID) groupid(分组ID) modification_date(修改日期) modification_time(修改时间) dirname(目录名称)
目录中的文件默认以文件名称排序
例子:
使用: hadoop fs -lsr <args>
ls命令的递归版本
注意: 这个耳鸣了是过期的,可以用hadoop fs -ls -R
使用: hadoop fs -mkdir [-p] <paths>
以URI作为路径,创建目录。
参数:
例子:
[root@nn1 bin]# hadoop fs -mkdir file:///home/a1 file:///home/a2 [root@nn1 bin]# ll /home/ total 20 drwxr-xr-x 2 root root 4096 Aug 8 09:45 a1 drwxr-xr-x 2 root root 4096 Aug 8 09:45 a2 [root@nn1 bin]# hadoop fs -mkdir /home/a1 /home/a2 [root@nn1 bin]# hadoop fs -ls /home/ Found 2 items drwxr-xr-x - root supergroup 0 2015-08-08 09:47 /home/a1 drwxr-xr-x - root supergroup 0 2015-08-08 09:47 /home/a2返回值: 返回0为成功,-1则失败
使用: hadoop fs -moveFromLocal <localsrc> <dst>
除了本地路径在被拷贝后会被删除。其他类似于put命令
目前为止还未实现。
使用: hadoop fs -mv URI [URI ...] <dest>
将文件从源路径移动到目标路径(文件和目录都可以移动),这个命令允许多个源,但是目标路径必须是一个目录,跨文件系统的移动文件是不允许的。
例子:
使用: hadoop fs -put <localsrc> ... <dst>
从本地文件系统拷贝单个源,或者多个源到目标文件系统,也可以从标准输入写入到目标文件系统。
使用: hadoop fs -rm [-f] [-r |-R] [-skipTrash] URI [URI ...]
删除参数指定的文件。
参数:
例子:
使用: hadoop fs -rmdir [--ignore-fail-on-non-empty] URI [URI ...]
删除目录
参数:
例子:
递归删除
注意:这个命令是过期的,可以使用fs -rm -r命令代替。
使用: hadoop fs -setrep [-R] [-w] <numReplicas> <path>
改变某个文件的复制因子,如果path是一个路径,那么这个命令就递归的修改所有文件的复制因子
参数:
例子:
[root@nn1 bin]# hadoop fs -stat "%b %F %u:%g %o %y %n %r" /fish/1.txt 14 regular file root:supergroup 134217728 2015-08-07 07:50:15 1.txt 3 //开始的副本数是3 [root@nn1 bin]# hadoop fs -setrep -w 4 /fish/1.txt //修改副本数为4 Replication 4 set: /fish/1.txt Waiting for /fish/1.txt ....................................................................................................................................................................................................................................................................................................................................................setrep: `/fish/1.txt': No such file or directory [root@nn1 bin]# hadoop fs -stat "%b %F %u:%g %o %y %n %r" /fish/1.txt<pre name="code" class="java">14 regular file root:supergroup 134217728 2015-08-07 07:50:15 1.txt 4 //结束的副本数为4返回值: 返回0为成功,-1则失败
使用: hadoop fs -stat [format] <path> ...
根据文件/目录打印出指定格式的统计信息。接受的格式:所有块文件大小(%b),类型(%F),所属分组(%g),名称(%n),块大小(%o),副本数量(%r),所属用户名(%u),和修改时间(%y,%Y),%y展示“yyyy-MM-dd HH:mm:ss”格式的UTC时间,%Y则显示1970年到现在的毫秒数。如果没有指定日期格式,默认则为%y
例子:
返回值: 返回0为成功,-1则失败
使用: hadoop fs -tail [-f] URI
标准输出中,显示文件末尾的1K的内容
参数:例子:
返回值: 返回0为成功,-1则失败
使用: hadoop fs -test -[defsz] URI
参数例子:
使用: hadoop fs -text <src>
将源文件输出为文本格式。允许的格式是zip和TextRecordInputStream。
使用: hadoop fs -touchz URI [URI ...]
创建一个长度为0的文件。
例子:
返回值: 返回0为成功,-1则失败
Usage: hadoop fs -usage command
返回单个命令的帮助。
例子:hadoop fs -usage du
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/qianshangding0708/article/details/47336061