概述
文件系统(FS)shell包含了一系列的与shell相似的命令,很多都对应着Unix中的命令,这些命令可以直接与Hadoop分布式文件系统(HDFS)以及Hadoop支持的其他文件系统,如本地FS、HFTP、S3等进行交互。可以通过如下方法调用:bin/hadoop fs <args>
。args都是以路径URI作为参数,本篇文章都是基于HDFS来介绍说明的。
一个HDFS中的文件或目录的格式大致是这样:hdfs://namenodehost/test/a.txt
。namenodehost即为NameNode节点的主机名。如果你的Hadoop安装目录…/hadoop/etc/hadoop/core-site.xml的文件中有如下配置,那么在操作一个文件或目录时,可以省掉前缀,即/test/a.txt。
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenodehost</value>
</property>
命令
ls
返回指定文件或指定目录下所有文件的权限、副本数、所属用户组等信息。
示例:hadoop fs -ls /test/
cat
显示文件内容到标准输出。
示例:
hadoop fs -cat /test/src.txt 显示文件src.txt的所有内容
hadoop fs -cat /test/src.txt | less 对于内容较多的文件可以用less上下翻页
cp
拷贝文件从源地址到目标地址。允许拷贝一次拷贝多个文件到目标目录下。
示例:hadoop fs -cp /test/src.txt /test/des.txt 拷贝时可以改变文件名
mv
将文件或目录从源地址移动到目标地址。
示例:hadoop fs -mv /test/src.txt /test2/
touchz
创建一个空文件。
示例:hadoop fs -touchz /test/src.txt
mkdir
创建目录。
示例:
hadoop fs -mkdir /test/dir 创建目录dir
hadoop fs -mkdir -p /test/dir1/dir2/dir3 递归地创建dir1、dir2和dir3
rm
删除指定的文件。
示例:
hadoop fs -rm /test/des.txt 删除文件des.txt
hadoop fs -rm -r /test 递归地删除test目录以及test下面的所有目录和文件(慎用啊!)。
rmr
递归地删除文件和目录。此命令已被弃用,代替使用-rm -r。
rmdir
删除指定目录。
示例:hadoop fs -rmdir /test
get
拷贝HDFS中的文件到本地文件系统。
示例:hadoop fs -get /test/src.txt . 拷贝src.txt文件到本地文件系统的当前目录下
put
拷贝本地文件系统中的文件到HDFS上。
示例:hadoop fs -put src.txt /test/
copyFromLocal
功能和put类似,除了要求源文件一定要是本地文件。
copyToLocal
功能和get类似,除了目标文件要是本地文件引用。
moveFromLocal
功能类似put,除了拷贝之后会删除源文件。
moveToLocal
目前无法使用,执行命令会显示 “Not implemented yet” 。
df
显示文件系统空间占用情况。
示例:hadoop fs -df -h /test/src.txt
Filesystem Size Used Available Use%
hdfs://nnhost 5T 2.1T 2.9T 42%
du
显示文件大小,或者目录中所有文件大小。
示例:
hadoop fs -du -h /test/src.txt 显示文件大小
hadoop fs -du -h /test/ 依次显示目录下所有文件的大小
find
显示指定目录下匹配指定表达式的所有文件。
示例:hadoop fs -find /test -name “*.txt” 显示/test目录下所有以.txt结尾的文件
count
依次显示URI下面的总的目录数、文件数和字节数。
示例:hadoop fs -count /test/
目录数 文件数 字节数
50000 10000 409600000
tail
显示文件的最后一kb到标准输出。
示例:hadoop fs -tail /test/src.txt
chmod
修改文件的权限。
示例:
hadoop fs -chmod 744 /test/src.txt 修改文件src.txt的权限为r+w+x
hadoop fs -chmod -R 744 /test/ 递归地修改test目录及其子目录下所有文件的权限
chown
修改文件所属的用户
示例:hadoop fs -chown [-R] owner:group /test/src.txt
checksum
查看文件的校验信息。
示例:hadoop fs -checksum /test/src.txt