Hadoop框架之HDFS的shell操作
既然HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS的操作命令类似于Linux的shell对文件的操作,如ls、mkdir、rm等。
我们执行以下操作的时候,一定要确定hadoop是正常运行的,使用jps命令确保看到各个hadoop进程。
我们执行命令hadoop fs,如图4-1所示。

图4-1
图中显示了很多命令选项信息。以上截图不全,我在表格4-1中完整地列出了支持的命令选项。
|
选项名称 |
使用格式 |
含义 |
|
-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目的路径> |
从本地移动 |
|
-mkdir |
-mkdir <hdfs路径> |
创建空白文件夹 |
|
-setrep |
-setrep [-R] [-w] <副本数> <路径> |
修改副本数量 |
|
-touchz |
-touchz <文件路径> |
创建空白文件 |
|
-stat |
-stat [format] <路径> |
显示文件统计信息 |
|
-tail |
-tail [-f] <文件> |
查看文件尾部信息 |
|
-chmod |
-chmod [-R] <权限模式> [路径] |
修改权限 |
|
-chown |
-chown [-R] [属主][:[属组]] 路径 |
修改属主 |
|
-chgrp |
-chgrp [-R] 属组名称 路径 |
修改属组 |
|
-help |
-help [命令选项] |
帮助 |
注意:以上表格中路径包括hdfs中的路径和linux中的路径。对于容易产生歧义的地方,会特别指出“linux路径”或者“hdfs路径”。如果没有明确指出,意味着是hdfs路径。
下面我们讲述每个命令选项的用法。
-ls 显示当前目录结构
该命令选项表示查看指定路径的当前目录结构,后面跟hdfs路径,如图4-1所示。

图4-1
上图中的路径是hdfs根目录,显示的内容格式与linux的命令ls –l显示的内容格式非常相似,下面解析每一行的内容格式:
l 首字母表示文件夹(如果是“d”)还是文件(如果是“-”);
l 后面的9位字符表示权限;
l 后面的数字或者“-”表示副本数。如果是文件,使用数字表示副本数;文件夹没有副本;
l 后面的“root”表示属主;
l 后面的“supergroup”表示属组;
l 后面的“0”、“6176”、“37645”表示文件大小,单位是字节;
l 后面的时间表示修改时间,格式是年月日时分;
l 最后一项表示文件路径。
可见根目录下面有四个文件夹、两个文件。
如果该命令选项后面没有路径,那么就会访问/user/<当前用户>目录。我们使用root用户登录,因此会访问hdfs的/user/root目录,如图4-2所示。

图4-2
如果没有这个目录/user/root,会提示文件不存在的错误。
-lsr 递归显示目录结构
该命令选项表示递归显示当前路径的目录结构,后面跟hdfs路径。如图4-3所示。

图4-3
显示/user目录下有个root目录,root目录下有文件abc。
-du 统计目录下各文件大小
该命令选项显示指定路径下的文件大小,单位是字节,如图4-4所示。

图4-4
-dus 汇总统计目录下文件大小
该命令选项显示指定路径的文件大小,单位是字节,如图4-5所示。

图4-5
请读者比较图4-4与图4-5的区别,体会两个命令选项的不同含义。
-count 统计文件(夹)数量
该命令选项显示指定路径下的文件夹数量、文件数量、文件总大小信息,如图4-6所示。

图4-6
在图4-6中有两条命令,下面的命令是为了佐证上面命令的正确性的。
-mv 移动
该命令选项表示移动hdfs的文件到指定的hdfs目录中。后面跟两个路径,第一个表示源文件,第二个表示目的目录,如图4-7所示。

图4-7
在图4-7中有三条命令,是为了体现移动前后的变化情况。
-cp 复制
该命令选项表示复制hdfs指定的文件到指定的hdfs目录中。后面跟两个路径,第一个是被复制的文件,第二个是目的地,如图4-8所示。

图4-8
在图4-8中有三条命令,是为了体现复制前后的变化情况。
-rm 删除文件/空白文件夹
该命令选项表示删除指定的文件或者空目录,如图4-9所示。

图4-9
在图4-9中,前三条命令是为了体现执行前后的变化情况。第四条命令是删除非空的“/user/root”目录,操作失败,表明不能删除非空目录。
-rmr 递归删除
该命令选项表示递归删除指定目录下的所有子目录和文件,如图4-10所示。

图4-10
-put 上传文件
该命令选项表示把linux上的文件复制到hdfs中,如图4-11所示。

图4-11
-copyFromLocal 从本地复制
操作与-put一致,不再举例。
-moveFromLocal 从本地移动
该命令表示把文件从linux上移动到hdfs中,如图4-12所示。

图4-12
-getmerge 合并到本地
该命令选项的含义是把hdfs指定目录下的所有文件内容合并到本地linux的文件中,如图4-13所示。

图4-13
-cat 查看文件内容
该命令选项是查看文件内容,如图4-14所示。

图4-14
-text 查看文件内容
该命令选项可以认为作用和用法与-cat相同,此处略。
-mkdir 创建空白文件夹
该命令选项表示创建文件夹,后面跟的路径是在hdfs将要创建的文件夹,如图4-15所示。

图4-15
-setrep 设置副本数量
该命令选项是修改已保存文件的副本数量,后面跟副本数量,再跟文件路径,如图4-16所示。

图4-16
在图4-16中,我们修改了文件/install.log的副本数,由1修改为2,意味着多了一个副本,HDFS会自动执行文件的复制工作,产生新的副本。
如果最后的路径表示文件夹,那么需要跟选项-R,表示对文件夹中的所有文件都修改副本,如图4-17所示。

图4-17
在图4-17中,我们对/user文件夹进行的操作,使用了选项-R,那么/user/root下的文件abc的副本数发生了改变。
还有一个选项是-w,表示等待副本操作结束才退出命令,如图4-18所示。

图4-18
请读者自己比较以上两图中使用-q前后执行结果的变化情况。
-touchz 创建空白文件
该命令选项是在hdfs中创建空白文件,如图4-19所示。

图4-19
-stat 显示文件的统计信息
该命令选项显示文件的一些统计信息,如图4-20所示。

图4-20
在图4-20中,命令选项后面可以有格式,使用引号表示。示例中的格式“%b %n %o %r %Y”依次表示文件大小、文件名称、块大小、副本数、访问时间。
-tail 查看文件尾部内容
该命令选项显示文件最后1K字节的内容。一般用于查看日志。如果带有选项-f,那么当文件内容变化时,也会自动显示,如图4-21所示。

图4-21
-chmod 修改文件权限
该命令选项的使用类似于linux的shell中的chmod用法,作用是修改文件的权限,如图4-22所示。

图4-22
在图4-22中,修改了文件/emptyfile的权限。
如果加上选项-R,可以对文件夹中的所有文件修改权限,如图4-23所示。

图4-23
-chown 修改属主
该命令选项表示修改文件的属主,如图4-24所示。

图4-24
上图中把文件/emptyfile的属主由root修改为itcast。
也可以同时修改属组,如图4-25所示。

图4-25
在图4-25中,把文件/emptyfile的属主和属组都修改为itcast,如果只修改属组,可以使用“:itcast”。
如果带有选项-R,意味着可以递归修改文件夹中的所有文件的属主、属组信息。
-chgrp 修改属组
该命令的作用是修改文件的属组,该命令相当于“chown :属组”的用法,如图4-26所示。

图4-26
-help 帮助
该命令选项会显示帮助信息,后面跟上需要查询的命令选项即可,如图4-27所示。

图4-27
在图4-27中,查询的rm的用法。
该命令选项显示的内容并非完全准确,比如查询count的结果就不准确,而是把所有命令选项的用法都显示出来,如图4-28所示。希望新的版本以后改进。

图4-28
读者短时间无法掌握全部命令用法,请重点掌握ls(r)、rm(r)、mkdir、put、get的使用。
-----------------------------------------------------------------------------
来源链接:https://wenku.baidu.com/view/3406704cf01dc281e53af0f8.html
Hadoop框架之HDFS的shell操作的更多相关文章
- hadoop学习(六)----HDFS的shell操作
HDFS所有命令: [uploaduser@rickiyang ~]$ hadoop fs Usage: hadoop fs [generic options] [-appendToFile < ...
- Hadoop开发第6期---HDFS的shell操作
一.HDFS的shell命令简介 我们都知道HDFS 是存取数据的分布式文件系统,那么对HDFS 的操作,就是文件系统的基本操作,比如文件的创建.修改.删除.修改权限等,文件夹的创建.删除.重命名等. ...
- 大数据:Hadoop(JDK安装、HDFS伪分布式环境搭建、HDFS 的shell操作)
所有的内容都来源与 Hadoop 官方文档 一.Hadoop 伪分布式安装步骤 1)JDK安装 解压:tar -zxvf jdk-7u79-linux-x64.tar.gz -C ~/app 添加到系 ...
- HDFS02 HDFS的Shell操作
HDFS的Shell操作(开发重点) 目录 HDFS的Shell操作(开发重点) 基本语法 常用命令 准备工作 上传 -moveFromLocal 剪切 -copyFromLocal 拷贝 -put ...
- Hadoop读书笔记(二)HDFS的shell操作
Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 1.shell操作 1.1全部的HDFS ...
- Hadoop HDFS的Shell操作实例
本文发表于本人博客. 我们知道HDFS是Hadoop的分布式文件系统,那既然是文件系统那最起码会有管理文件.文件夹之类的功能吧,这个类似我们的Windows操作系统一样的吧,创建.修改.删除.移动.复 ...
- Hadoop(6)-HDFS的shell操作
1.基本语法 使用 hadoop fs 具体命令 或者 hdfs dfs 具体命令 hadoop命令的shell源码 hdfs命令的shell源码 由此可见,这两个命令最后都是执行的一个jav ...
- HDFS基本shell操作
在客户端输入Hadoop fs,可以查看所有的,hadoop shell # -help [cmd] //显示命令的帮助信息,如: hadoop fs -help ls # -ls(r) <pa ...
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
随机推荐
- VBA编程中的 sheet1 与 sheets(1)的区别
[自己理解]sheet1是一个专有名词,不是任何对象的属性,只能单独使用,特指代码所在工作簿的那个sheet1(和顺序无关,是固定的一个表,sheets(1)则和顺序有关). 参考资料: 1.代码中一 ...
- servlet 解决乱码问题
对于servlet大家应该都很熟悉了,今天再复习一下,如果有哪里写的不好或不对的地点希望广大的网友批评指正.今天只讨论get和post两w种方式,他们之间有很多的不同点,所以解决编码的方式也会不一样, ...
- 快速创建一个 Servlet 项目(1)
1. 新建一个 maven project (web app) 得到如下项目 2. 添加 servlet 和 jsp 依赖 通常 servlet 和 jsp 依赖由web容器提供,这个编译错误并不会影 ...
- jsp 中出现大量红线,而且页面能正常访问
第一次,出现这种情况真的很苦恼,估计是有强迫症的原因,就是看着不舒服,都页面能正常访问,但是还是想解决它 解决方法:依次按下 ctl+A ctl+X.ctl+V, 没看错就是 全选,剪切,粘贴 就好了 ...
- Android-Kotlin-抽象类与多态的表现
选择包名,然后右键: 选择Class类型,会有class: 选择File类型,不会自动有class: 目录结构: 定义描述抽象类 Person人类: package cn.kotlin.kotlin ...
- 分形之列维(levy)曲线
莱维C形曲线(Lévy C curve)是个自我相似的分形,最先由保罗·皮埃尔·莱维在1938年的论文Plane or Space Curves and Surfaces Consisting of ...
- C#单例类的实现
C#单例类的实现 单例类保证一个类全局仅有一个实例,并提供一个全局访问点,由于只能生成一个实例,因此我们必须把构造函数设为私有函数以禁止他人创建实例. 实现1:懒汉式,线程不安全 该实现没有额外开销, ...
- winfrom图片放大器
废话不多说,直接上图看效果,左上角是原图片大小,右边是局部放大的效果 主要代码贴在下面,picBox是原图控件名,picBox_Show是放大控件名 private void picBox_Paint ...
- WPF DataGrid分组和排序
之前一直用的Dev的GridControl,控件自带分组排序啥的.今天试了下在wpf自带的Datagrid控件上实现分组和排序. Datagrid上实现这些功能主要用到CollectionViewSo ...
- WPF点滴(3) 行为-Behavior
为了定制个性化的用户界面,我们通常会借助于WPF强大的样式(style),修改控件属性,重写控件模板(template),样式帮助我们构建一致的个性化控件.通过样式可以调整界面的显示效果,这只是界面构 ...