首页 > 代码库 > Hadoop学习Day8---HDFS 的shell 操作
Hadoop学习Day8---HDFS 的shell 操作
一、HDFS的shell命令简介
我们都知道HDFS 是存取数据的分布式文件系统,那么对HDFS 的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS 的操作命令类似于lLinux 的shell 对文件的操作,如ls、mkdir、rm 等。
我们在执行HDFS的shell操作的时候,一定要确定hadoop 是正常运行的,我们可以使用使用jps 命令确保看到各个hadoop 进程。
我们可以执行命令hadoop fs,来查看HDFS的shell操作的所有命令如下。
[root@hadoop ~]# hadoop fs
Usage: java FsShell
[-ls <path>]
[-lsr <path>]
[-du <path>]
[-dus <path>]
[-count[-q] <path>]
[-mv <src> <dst>]
[-cp <src> <dst>]
[-rm [-skipTrash] <path>]
[-rmr [-skipTrash] <path>]
[-expunge]
[-put <localsrc> ... <dst>]
[-copyFromLocal <localsrc> ... <dst>]
[-moveFromLocal <localsrc> ... <dst>]
[-get [-ignoreCrc] [-crc] <src> <localdst>]
[-getmerge <src> <localdst> [addnl]]
[-cat <src>]
[-text <src>]
[-copyToLocal [-ignoreCrc] [-crc] <src> <localdst>]
[-moveToLocal [-crc] <src> <localdst>]
[-mkdir <path>]
[-setrep [-R] [-w] <rep> <path/file>]
[-touchz <path>]
[-test -[ezd] <path>]
[-stat [format] <path>]
[-tail [-f] <file>]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-chgrp [-R] GROUP PATH...]
[-help [cmd]]
二、HDFS的shell操作命令选项
选项名称
使用格式
含义
-ls
-ls <路径>
查看指定路径的当前目录结构
-lsr
-lsr <路径>
递归查看指定路径的目录结构
-du
-du <路径>
统计目录下各文件大小
-dus
-dus <路径>
汇总统计目录下文件(夹)大小
-count
-count [-q] <路径>
统计文件(夹)数量
-mv
-mv <源路径> <目的路径>
移动
-cp
-cp <源路径> <目的路径>
复制
-rm
-rm [-skipTrash] <路径>
删除文件/空白文件夹
-rmr
-rmr [-skipTrash] <路径>
递归删除
-put
-put <多个linux上的文件> <hdfs 路径>
上传文件
-copyFromLocal
-copyFromLocal <多个linux 上的文件> <hdfs 路径>
从本地复制
-moveFromLocal
-moveFromLocal <多个linux 上的文件> <hdfs 路径>
从本地移动
-getmerge
-getmerge <源路径> <linux 路径>
合并到本地
-cat
-cat <hdfs 路径>
查看文件内容
-text
-text <hdfs 路径>
查看文件内容
-copyToLocal
-copyToLocal [-ignoreCrc] [-crc] [hdfs 源路径] [linux 目的路径]
复制到本地
-moveToLocal
-moveToLocal [-crc] <hdfs 源路径> <linux目的路径>
移动到本地
-setrep
-setrep [-R] [-w] <副本数> <路径>
修改副本数量
-mkdir
-mkdir <hdfs 路径>
创建空白文件夹
-touchz
-touchz <文件路径>
创建空白文件
-stat
-stat [format] <路径>
显示文件统计信息
-tail
-tail [-f] <文件>
查看文件尾部信息
-chmod
-chmod [-R] <权限模式> [路径]
修改权限
-chown
-chown [-R] [属主][:[属组]]路径
修改属主
-chgrp
-chgrp [-R] 属组名称 路径
修改属组
-help
-help -help [命令选项]
帮助
三、各命令选项的用法
1. ls 显示当前目录结构
<1>该命令选项表示查看指定路径的当前目录结构,后面跟hdfs 路径,如果图3.1所示。
图 3.1
我们解释一下每一行的内容格式:
首字母表示文件夹(如果是“d”)还是文件(如果是“-”);
后面的9 位字符表示权限;
后面的数字或者“-”表示副本数。如果是文件,使用数字表示副本数;文件夹没有副本;
后面的“root”表示属主;
后面的“supergroup”表示属组;
后面的“0”、“ 84927175”表示文件大小,单位是字节;
后面的时间表示修改时间,格式是年月日时分;
最后一项表示文件路径。
可见根目录下面有1个文件夹、1个文件。<2>如果该命令选项后面没有路径,那么就会访问/user/<当前用户>目录。我们使用root用户登录,因此会访问hdfs 的/user/root 目录,但是如果没有这个目录/user/root,会提示文件不存在的错误如图3.2所示,添加该目录后再次执行该命令如图3.3,3.4所示。
图 3.2
图 3.3
图 3.4
2. -lsr 递归显示目录结构
该命令选项表示递归显示当前路径的目录结构,后面跟hdfs 路径。如图3.5 所示。
图 3.5
显示/user 目录下有个root 目录,root 目录下有文件hello
3. -du 统计目录下各文件大小
该命令选项显示指定路径下的文件大小,单位是字节,如图3.6所示。
图 3.6
4. -dus 汇总统计目录下文件大小
该命令选项显示指定路径的文件大小,单位是字节,如图3.7所示。
图3.7请读者比较图3.6与图3.7的区别,体会两个命令选项的不同含义。
5. count 统计文件(夹)数量
该命令选项显示指定路径下的文件夹数量、文件数量、文件总大小信息,如图3.8所示.。
图 3.8
在图4-6 中有两条命令,下面的命令是为了佐证上面命令的正确性的。
6. mv 移动
该命令选项表示移动hdfs 的文件到指定的hdfs 目录中。后面跟两个路径,第一个表示源文件,第二个表示目的目录。如图3.9所示。
图 3.9
在图3.9 中有三条命令,是为了体现移动前后的变化情况。
7. cp 复制
该命令选项表示复制hdfs 指定的文件到指定的hdfs 目录中。后面跟两个路径,第一个是被复制的文件,第二个是目的地。,如图3.10所示。.
图3.10
在图3.10中有三条命令,是为了体现复制前后的变化情况。?
8. rm 删除文件/空白文件夹
该命令选项表示删除指定的文件或者空目录,如图3.11 所示。.
图3.11
在图3.11 中,前三条命令是为了体现执行前后的变化情况。第四条命令是删除非空的“/user”目录,操作失败,表明不能删除非空目录。
9. rmr 递归删除
该命令选项表示递归删除指定目录下的所有子目录和文件,如图3.12 所示。
图 3.12?
10. put 上传文件
该命令选项表示把linux 上的文件复制到hdfs 中,如图3.12所示。.
图 3.12
11. copyFromLocal 从本地复制到hdfs ------操作与-put 一致,不再举例。
12. moveFromLocal 从本地移动到hdfs
该命令表示把文件从linux 上移动到hdfs 中,如图3.13所示。
图 3.13
13. getmerge 合并到本地
该命令选项的含义是把hdfs 指定目录下的所有文件内容合并到本地linux 的文件中,如图3.14所示。
图3.14
14. cat 查看文件内容
该命令选项是查看文件内容,如图3.15所示。
图3.15
15. text 查看文件内容
该命令选项可以认为作用和用法与-cat 相同,此处略。
16. mkdir 创建空白文件夹
该命令选项表示创建文件夹,后面跟的路径是在hdfs 将要创建的文件夹,如图3.16 所示。
图3.16
17. setrep 设置副本数量
<1>该命令选项是修改已保存文件的副本数量,后面跟副本数量,再跟文件路径,如图3.17所示。
图3.17
在图3.17 中,我们修改了文件/file1的副本数,由1 修改为2,意味着多了一个副本,HDFS 会自动执行文件的复制工作,产生新的副本。
<2>如果最后的路径表示文件夹,那么需要跟选项-R,表示对文件夹中的所有文件都修改副
本,如图3.18 所示
图3.18在图3.18中,我们对/user/root 文件夹进行的操作,使用了选项-R,那么/user/root 下的文件file2,file1 的副本数发生了改变。
<3>还有一个选项是-w,表示等待副本操作结束才退出命令,如图3.19所示。
图3.19
18. touchz 创建空白文件
该命令选项是在hdfs 中创建空白文件,如图3.20 所示。
图3.20
19. stat 显示文件的统计信息
该命令选项显示文件的一些统计信息,如图3.21所示。
图3.21
在图3.21 中,命令选项后面可以有格式,使用引号表示。示例中的格式“%b %n %o%r %Y”依次表示文件大小、文件名称、块大小、副本数、访问时间.
20. tail 查看文件尾部内容
该命令选项显示文件最后1K 字节的内容。一般用于查看日志。如果带有选项-f,那么当文件内容变化时,也会自动显示。如图3.22 所示。
图3.22
21. chmod 修改文件权限
<1>该命令选项的使用类似于linux 的shell 中的chmod 用法,作用是修改文件的权限,如图3.23 所示。.
图3.23
<2>在图3.23中,修改了文件/emptyfile 的权限。如果加上选项-R,可以对文件夹中的所有文件修改权限,如图3.24 所示。.
图3.24
22. chown 修改属主
该命令选项表示修改文件的属主,如图3.25所示。
图3.25
<2>上图中把文件/emptyfile 的属主由root 修改为sunddenly。也可以同时修改属组,如图3.26 所示。
图3.26
在图3.26中,把文件/emptyfile 的属主和属组都修改为itcast,如果只修改属组,可以
使用“:sunddenly”。
如果带有选项-R,意味着可以递归修改文件夹中的所有文件的属主、属组信息。
23. chgrp 修改属组
该命令的作用是修改文件的属组,该命令相当于“chown :属组”的用法,如图3.27所示。
图3.27?
24. help 帮助
该命令选项会显示帮助信息,后面跟上需要查询的命令选项即可,如图4-27 所示。
图3.28
在图3.28 中,查询的rm 的用法。
Hadoop学习Day8---HDFS 的shell 操作