HDFS常用命令介绍与使用
HDFS命令行接口
前言:Hadoop自带一组命令行工具,而其中有关HDFS的命令是其工作集的一个子集。命令行工作虽然是最基本的文件操作方式
但也是最常用的,所以熟练掌握是很必要的
1. 目录浏览命令
ls
hdfs dfs -ls <path>
列出文件和目录内容
例子:hdfs dfs -ls /
lsr
hdfs dfs -lsr <path>
递归列出目录内容
例子:hdfs dfs -lsr /
df
hdfs dfs -df <path>
查看目录使用情况
例子:hdfs dfs -df /
du
hdfs dfs -du <path>
查看该目录下所有目录及文件的大小
例子:hdfs dfs -du /
dus
hdfs dfs -dus <path>
只显示<path>目录的总大小,与du不同的是du会把<path>目录下所有目录和文件都列举
出来,而dus只会将<dus>目录的大小列出来
例子:hdsf dfs -dus /
2. 目录或文件统计与测试命令
count
hdfs dfs -count [-q] <path>
显示<path>下的目录数及文件数,输出格式:"目录数 文件数 大小 路径"
值得注意的是,统计是包含<path>本身这个目录或者文件,且是递归统计
加上-q还可以查看文件的索引情况
例子:hdfs dfs -count /
test
hdfs dfs -test [-ezd] <path>
检查HDFS上路径为<path>的文件
-e 检查文件是否存在,如果存在则返回0
-z 检查文件是否是0字节。如果是则返回0
-d 如果路径是个目录,则返回0,否则返回1
例子:hdfs dfs -test -e /user/file
stat
显示HDFS上路径为<path>的文件或目录的统计信息。格式为:
%b 文件大小
%n 文件名
%r 复制因子
%y,%Y 修改日期
例子:hdfs dfs -stat %b %n %r %y /user/file
3. 文件浏览命令
cat
hdfs dfs -cat <src>
浏览HDFS路径为<src>的文件内容
例子:hdfs dfs -cat /user/file
text
hdfs dfs -text <src>
将HDFS路径为<src>的文本文件输出
例子:hdfs dfs -text /user/file
tail
hdfs dfs -tail [-f] <file>
显示HDFS上路径为<file>的文件最后1KB字节
-f选项会使显示的内容随文件内容更新而更新
例子:hdfs dfs -tail -f /user/file
4. 目录操作命令
rmr
hdfs dfs -rmr [-skipTrash] <path>
将HDFS路径为<path>的目录以及目录下的文件移近回收站
如果加上了-skipTrash参数,则直接删除
例子:hdfs dfs -skipTrash /user
mkdir
hdfs dfs -mkdir [-p] <path>
在HDFS上创建路径为<path>的目录
-p 可以创建不存在的父目录,也就是递归创建目录
hdfs dfs -mkdir -p /hdfs/d1/d2/d3
5. 文件操作命令
HDFS文件系内文件操作
rm
hdfs dfs -rm [skipTrash] <path>
将HDFS上路径为<path>的文件移动到回收站
如果加上-skipTrash参数,则直接删除
例子:hdfs dfs -rm -skipTrash /user/file
touchz
hdfs dfs -touchz <path>
创建一个路径为<path>的0字节的HDFS空文件
例子:hdfs dfs -touchz /user/file
setrep
hdfs dfs -setrep [-R] [-w] <rep> <path/file>
设置文件负责因子。该命令可以单独设置文件的负责因子
加上-R可以递归执行该操作
例子:hdfs dfs -setrep -R 1 /user
expunge
hdfs dfs -expunge
清空回收站
例子:hdfs dfs -expunge
mv
hdfs dfs -mv <scr> <dst>
将HDFS上的文件移动到目标文件夹
例子:hdfs dfs -mv /user/test.txt user/test
将/user目录下的test.txt文件移动到/user/test目录下
Local到HDFS的文件操作
put
hdfs dfs -put <localsrc> <dst>
将<localsrc>本地文件上传到HDFS的<dst>目录下
hdfs dfs -put /home/hadoop/test.txt /user/
copyFromLocal
hdfs dfs -copyFromLocal <localsrc> <dst>
功能类似put
hdfs dfs -copyFromLocal /home/hadoop/test.txt /user
moveFromLocal
hdfs dfs -moveFromLocal <localsrc> <dst>
将<localsrc>本地文件移动到HDFS的<dst>目录下,本地删除
hdfs dfs -moveFromLocal /home/hadoop/test.txt /user
appendToFile
-appendToFile <localsrc> <dst>
将<localsrc>本地文件内容追加到HDFS下<dst>路径文件里面去
hdfs dfs -appendToFile ./test.txt /hdfs/test.txt
HDFS到Local的文件操作
get
hdfs dfs -get [-ignoreCrc] [-crc] <src> <localdst>
将HDFS上<src>的文件下载到本地的<localdst>目录
-ignoreCrc选项复制CRC验证失败的文件
-crc选项复制文件以及CRC信息
例子:hdfs dfs -get -crc /user/file /home/hadoop
getmerge
hdfs dfs -getmerge <src> <localdst> [addnl]
将HDFS上<scr>目录下的所有文件按文件名顺序合并成一个文件输出
到本地的<localdst>目录下
addnl可选,用于指定在每个文件结尾添加一个换行符
例子:hdfs dfs -getmerge /user/ /home/hadoop
copyToLocal
hdfs dfs -copyFromLocal [ignoreCrc] [-crc] <src> <localdst>
功能类似与get
例子:hdfs dfs -copyFromLocal -crc /user/file /home/hadoop
moveToLocal
hdfs dfs -moveToLocal [-crc] <src> <localdst>
将HDFS上路径为<src>的文件移动到本地<localdst>路径下,HDFS上删除
-crc选项复制文件以及CRC信息
例子:hdfs dfs -moveToLocal -crc /user/file /home/hadoop
6. 权限|分组|帮助命令
chmod
hdfs dfs -chmod [-R] <MODE> <path>
改变HDFS上路劲<path>的文件权限,-R选项递归执行该操作
例子:hdfs dfs -chmod -R +r /user #将/user/目录下所有文件加上文件读权限
例子:hdfs dfs -chmod -R 755 /user #将/user/目录下所有文件加上rwxr-xr-x权限
chown
hdfs dfs -chown [-R] [OWNER][:[GROUP]] <path>
修改HDFS上路径为<path>的文件所属用户和组,-R选项表示递归执行该操作
例子:hdfs dfs -chown -R hadoop:hadoop /user #将/user/目录下所有文件所属用户和组改为hadoop
chgrp
hdfs dfs -chgrp [-R] GROUP <path>
改变HDFS上路径为<path>的文件所属组别,-R表示递归执行该操作
例子:hdfs dfs -chgrp -R hadoop /user/
help
hdfs dfs -help
显示所有dfs命令的帮助信息
hdfs dfs -help