场景

CentOS7上搭建Hadoop集群(入门级)

在上面搭建起来Hadoop集群的基础上,通过HDFS shell的方式访问HDFS的常用命令。

    HDFS的访问方式有两种:一种是HDFS shell,一种是Java API方式。HDFS shell命令应
使用hadoop fs或hdfs dfs(其中官网建议使用hdfs dfs方式访问)。所有的HDFS shell命令使
用URI路径作为参数,URI格式是scheme://path,对于HDFS文件系统,scheme是hdfs;对
于本地文件系统,scheme是file。其中scheme是可选的,如果未加指定,默认是HDFS文件
系统。一个HDFS文件或目录如parent/path可以表示成hdfs://parent/path,或者是更简单的
/parent/path

注:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

启动HDFS后,显示常用命令的用法

hdfs dfs

HDFS的访问方式之HDFS shell的常用命令_本地文件

 

[root@master sbin]# hdfs dfs
Usage: hadoop fs [generic options]
[-appendToFile <localsrc> ... <dst>]
[-cat [-ignoreCrc] <src> ...]
[-checksum <src> ...]
[-chgrp [-R] GROUP PATH...]
[-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
[-chown [-R] [OWNER][:[GROUP]] PATH...]
[-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...]
[-cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>]
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-df [-h] [<path> ...]]
[-du [-s] [-h] [-x] <path> ...]
[-expunge]
[-find <path> ... <expression> ...]
[-get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
[-getfacl [-R] <path>]
[-getfattr [-R] {-n name | -d} [-e en] <path>]
[-getmerge [-nl] [-skip-empty-file] <src> <localdst>]
[-help [cmd ...]]
[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
[-mkdir [-p] <path> ...]
[-moveFromLocal <localsrc> ... <dst>]
[-moveToLocal <src> <localdst>]
[-mv <src> ... <dst>]
[-put [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
[-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...]
[-rmdir [--ignore-fail-on-non-empty] <dir> ...]
[-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
[-setfattr {-n name [-v value] | -x name} <path>]
[-setrep [-R] [-w] <rep> <path> ...]
[-stat [format] <path> ...]
[-tail [-f] <file>]
[-test -[defsz] <path>]
[-text [-ignoreCrc] <src> ...]
[-touchz <path> ...]
[-truncate [-w] <length> <path> ...]
[-usage [cmd ...]]

Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <file:///|hdfs://namenode:port> specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt <local|resourcemanager:port> specify a ResourceManager
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines.

The general command line syntax is
command [genericOptions] [commandOptions]

1、usage

例如查看ls的用法

hdfs dfs -usage ls

HDFS的访问方式之HDFS shell的常用命令_本地文件_02

 

2、help

查看命令的详细帮助,例如查看ls命令的帮助

hdfs dfs -help ls

HDFS的访问方式之HDFS shell的常用命令_HDFS_03

 

3、ls

查看文件或目录

hdfs dfs -ls hdfs://master:9000/

HDFS的访问方式之HDFS shell的常用命令_本地文件_04

这里的hdfs://master:9000/是fs.defaultFS配置的值,表示HDFS系统中的根目录

如果使用的是HDFS文件系统,可以简写为/

加上选项-R 连同子目录的文件一起列出

4、put

从本地文件系统上传文件到HDFS

hdfs dfs -put /usr/local/1.txt /

左边是本地文件系统的路径  右边是HDFS系统的路径,这里是根目录

HDFS的访问方式之HDFS shell的常用命令_hdfs_05

 

5、cat

显示文件内容

hdfs dfs -cat /1/txt

6、text

给指定的文件以文本的格式输出,允许的格式有zip、TextRecordInpurStream、Avro。

当文件为文本文件时,等同于cat

hdfs dfs -text /1.txt

HDFS的访问方式之HDFS shell的常用命令_HDFS_06

 

7、tail

显示文件最后1KB的内容。

hdfs dfs -tail /1.txt

8、touchz

创建一个空文件

hdfs dfs -touchz /badao.txt

9、get

从HDFS上下载文件到本地

hdfs dfs -get /badao.txt

HDFS的访问方式之HDFS shell的常用命令_hdfs_07

10、copyFromLocal

从本地系统上传文件到HDFS,与put命令相同

11、copyToLocal

从HDFS下载文件到本地文件系统,与get命令相同

12、moveFromLocal

与put命令相同,只是上传成功后本地文件会被删除

13、mv

同Linux的mv命令,移动或重命名文件

hdfs dfs -mv /1.txt /user

HDFS的访问方式之HDFS shell的常用命令_本地文件_08

14、cp

复制文件

hdfs dfs -cp /badao.txt /badaocopy.txt

HDFS的访问方式之HDFS shell的常用命令_HDFS_09

15、mkdir

创建文件夹

hdfs dfs -mkdir /newdir

HDFS的访问方式之HDFS shell的常用命令_HDFS_10

16、rm

删除文件

hdfs dfs -rm /badaocopy.txt

HDFS的访问方式之HDFS shell的常用命令_本地文件_11

选线 -r 可以递归的删除,可以删除非空目录。

17、rmdir

删除空目录

hdfs dfs -rmdir /newdir

HDFS的访问方式之HDFS shell的常用命令_HDFS_12

18、expunge

清空回收站

hdfs dfs -expunge

19、chmod

改变权限

hdfs dfs -chmod 777 /badao.txt

HDFS的访问方式之HDFS shell的常用命令_HDFS_13

20、count

显示指定文件或目录

hdfs dfs -count -q /

HDFS的访问方式之HDFS shell的常用命令_HDFS_14

 

21、du

显示文件大小

如果指定目录,会显示该目录中每个文件的大小

hdfs dfs -du /

HDFS的访问方式之HDFS shell的常用命令_hdfs_15

 

22、df

检查文件系统的磁盘空间占用情况

hdfs dfs -df /

HDFS的访问方式之HDFS shell的常用命令_hdfs_16

 23、stat

显示文件统计信息

格式:
%b为文件所占的块数,%g为文件所属的用户组,%n为文件名,%o为数据块大小
%r为备份数,%u为文件所属用户,%y为文件修改时间。

hdfs dfs -stat %b,%g,%n,%o,%r,%u,%y /user

HDFS的访问方式之HDFS shell的常用命令_本地文件_17

24、createSnapshot

创建快照。

Snapshot(快照)是一个全部文件系统或者某个目录在某一时刻的镜像。

创建动作仅仅是在目录对应的innode上加个快照的标签,不会涉及数据块的拷贝操作,也不会

对读写性能有影响,但是会占用NameNode一定的额外内存来存放快照中被修改的文件和目录

的元信息。

hdfs dfs -createSnapshot /user snap1

会提示:

Directory is not a snapshottable directory : /user

然后

hdfs dfsadmin -allowSnapshot /user

再执行即可

HDFS的访问方式之HDFS shell的常用命令_本地文件_18

25、renameSnapshot

重命名快照

hdfs dfs -renameSnapshot 路径  旧名称  新名称

比如:

hdfs dfs -renameSnapshot /user snap1 snap2

HDFS的访问方式之HDFS shell的常用命令_HDFS_19

26、deleteSnapshot

删除快照

hdfs dfs -deleteSnapshot /user snap2

HDFS的访问方式之HDFS shell的常用命令_本地文件_20