在HDFS的学习中,除了笔者第一篇的API操作之外,同样的,HDFS的shell操作也是必须要掌握的。下面,笔者就整理出了一些常用的shell命名,希望能够给读者带来些许帮助。
在刚开始学习HDFS的时候,大家可以通过hadoop fs这个命令,来查看HDFS的所有命令,然后就会全部显示出来,如下图所示:
下面,笔者就挑选一些进行说明:
1.cat
将指定的文件内容输出到另一个指定的文件中:
2.chgrp
改变文件所属的组:
3.chmod
改变文件的权限。
方法一:通过数字来改变权限:
方法二:通过加减与r、w、x来改变权限:
说明:
(1)文件的权限有10个字段,可以分为4个部分,如下图所示:
第一部分:文件类型(一共5中文件类型:“-”是普通文件,“d”是目录文件,“l”是链接文件,“b/c”是设备文件,“p”是管道文件);
第二部分:文件所有者拥有的权限
第三部分:文件所有者所在的组拥有的权限
第四部分:其他用户的权限
(2)操作权限分为读操作(r)、写操作(w)、可执行操作(x);
(3)如果用数字来表示,r代表4,w代表2,x代表1,根据你要修改的权限进行计算即可。
4.chown
改变文件的拥有者。
5.cp
将文件从源路径复制到目标路径。
6.du
显示目录中所有文件的大小,或者指定某个文件显示其大小。
7.dus
显示文件的大小。
与du的作用有一些微小的区别:
在查看某个目录下所有文件的大小时,du是将各个文件的大小列出来,而dus会将目录中所有的文件大小进行求和。但针对于查看某个文件的大小,二者无差别。
8.expunge
清空回收站。
9.get
将集群中的文件复制到Linux本地。
10.ls
(1)如果是文件,则按照如下格式返回文件信息:
文件权限 副本个数 文件拥有者 组 文件大小 查看时间 文件名
(2)如果是目录,则返回它直接子文件的一个列表:
11.lsr
ls命令的递归版本。
12.mkdir
创建目录。
13.mv
将文件从源路径移动到目标路径。
mv和cp的区别:
1.cp可将一个文件复制到本目录或其他目录;而mv还可以进行重命名;
2.cp只复制内容;而mv除了复制内容,还复制索引节点。
14.put
创建文件。
15.rm
删除指定文件,之删除非空目录和文件。
16.rmr
delete的递归版本。
17.setrep
修改文件的副本个数。
18.stat
返回指定路径的统计信息。
19.tail
将文件尾部1k字节的内容进行输出
20.test
-e:检查文件是否存在
-z:检查文件是否是0字节
-d:检查是否为目录
21.text
将源文件输出为文本格式。
22.touchz
创建一个0字节的空文件。
其他shell补充:
- 报告HDFS的基本统计情况:hadoop dfsadmin -report
- 检查整个文件系统的健康状况: hadoop fsck /
- 负载均衡:start-balancer.sh
- 查看主节点状态:hdfs haadmin -getServiceState namenode
- 手动切换主节点状态:hdfs haadmin -transitionToActive --forcemanual namenode