1. 分布式文件系统与 HDFS
1.1数据量越来越大,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统 管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就 是分布式文件管理系统 。
1.2学术一点的定义就是:分布式文件系统是一种允许文件通过网络在多台主机上分享的文 件系统,可让多机器上的多用户分享文件和存储空间。
1.3分布式文件管理系统很多, HDFS 只是其中一种。适用于一次写入、多次查询的情 况,不支持并发写情况,小文件不合适。
hadoop两个核心
HDFS:用于存储海量数据
MapReduce:用户计算海量
1.4小提示:如何在刚开始学习的时候,形象化的理解什么是 HDFS 哪呢?我们可以把 HDFS 看做是Windows的文件系统。在Windows的文件系统维护着有一套很多层次的文件夹目录, 这么复杂的目录层次是为了在文件夹中分门别类的地存放文件。我们经常做的操作是创建文 件夹、创建文件、移动文件、复制文件、删除文件、编辑文件、查找文件等。HDFS 与 Windows 中的文件系统类似,看到的和操作的也类似。同学们可以把 HDFS 理解为多个 Windows 文件系统。
2.HDFS的shell操作
2.1既然 HDFS 是存取数据的分布式文件系统,那么对 HDFS 的操作,就是文件系统的基本 操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对 HDFS 的操作命令类似于 Linux 的 shell 对文件的操作,如 ls、mkdir、rm 等。
2.2我们执行以下操作的时候,一定要确定 hadoop 是正常运行的,使用 jps 命令确保看到 各个 hadoop 进程。 我们执行命令 hadoop fs,如图下图所示。
上图中显示了很多命令选项信息。以上截图并不是所有的shell命令,下图中完整的地列出了支持的 命令选项。
注意:以上表格中对于路径,包括 hdfs 中的路径和 linux 中的路径。对于容易产生歧义的地方,会特别指出“linux 路径”或者“hdfs 路径”。如果没有明确指出,意味着是 hdfs 路径。
2.3 -ls 显示当前目录结构
该命令选项表示查看指定路径的当前目录结构,后面跟 hdfs 路径,效果下图所示。
上图中的路径是 hdfs 根目录,显示的内容格式与 linux 的命令 ls –l 显示的内容格式 非常相似,现在下面解析每一行的内容格式:
- 首字母表示文件夹(如果是“d”)还是文件(如果是“-”);
- 后面的 9 位字符表示权限;
- 后面的数字或者“-”表示副本数。如果是文件,使用数字表示副本数;文件夹没有副本;
- 后面的“hadoop”表示所属用户;
- 后面的“supergroup”表示属组;
- 后面的“0”、“54801”、“26846”表示文件大小,单位是字节;
- 后面的时间表示修改时间,格式是年月日时分;
- 最后一项表示文件路径。 可见根目录下面有四个文件夹、两个文件。
如果该命令选项后面没有路径,那么就会访问/user/目录。我们使用 hadoop 用户登录,因此会访问 hdfs 的/user/hadoop 目录,如下图所示。
如果没有/user/hadoop这个目录,会提示文件不存在的错误。
2.4 -lsr 递归显示目录结构
该命令选项表示递归显示当前路径的目录结构,后面跟 hdfs 路径。如下图所示。
2.5 -du 统计目录下各文件大小
该命令选项显示指定路径下的文件大小,单位是字节,如下图所
2.6 -dus 汇总统计目录下文件大小
该命令选项显示指定路径的文件大小,单位是字节,如图 4-5 所示
2.7 -count 统计文件(夹)数量
该命令选项显示指定路径下的文件夹数量、文件数量、文件总大小信息,如下图所示
2.8 -mv 移动
该命令选项表示移动 hdfs 的文件到指定的 hdfs 目录中。后面跟两个路径,第一个 表示源文件,第二个表示目的目录。,如下图所示。
.
2.9 -cp 复制
该命令选项表示复制 hdfs 指定的文件到指定的 hdfs 目录中。后面跟两个路径,第 一个是被复制的文件,第二个是目的地。如下图所示
3.0 -rm 删除文件
3.1 -rmr 递归删除
3.2 -put 上传文件
命令选项表示把 linux 上的文件复制到 hdfs 中,如下图所示
3.3 -mkdir 创建空白文件夹
该命令选项表示创建文件夹,后面跟的路径是在 hdfs 将要创建的文件夹,如下图所示
3.4 -help 帮助
该命令选项会显示帮助信息,后面跟上需要查询的命令选项即可,如下图所示
我们在短时间内无法掌握全部命令用法,需要重点掌握 ls®、rm®、mkdir、put的使用。