1.HDFS介绍
在现代的企业环境中,数据存储主要存在两个问题:
- 存储的数据量大,单机往往无法存储大量数据;
- 存储不够安全,节点不可用时数据容易丢失。
分布式文件系统就是为了解决以上两个问题而诞生的,而 HDFS(Hadoop Distributed File System) 就是Hadoop的分布式文件系统具体实现。可以理解为,Hadoop是对大量数据进行分布式处理的系统框架,而HDFS是Hadoop中的一个部件,但不是Hadoop所必需的。
2.HDFS的核心概念
2.1 Blocks
数据在传输或者存储的过程中都是以数据块为单位,每个块作为独立的存储单元。
Blocks的大小
在不同版本的Haddoop中,数据块的大小不太一致。在Hadoop 1.x中数据块的大小是64M,在Hadoop 2.x中数据块的大小为128M。
以200M的数据为例,如果使用Hadoop 2.x以后的版本,则会切分成128M和72M进行存储。如果数据大小不到128M,会按实际的大小进行传输,但是占用的数据块依然是128M。
Blocks的冗余度
同时还要遵循数据块冗余度的要求,HDFS默认的数据块冗余度是3,也就是默认一个数据块要保存3份。这就一定程度上,解决了上面说的节点不可用时数据丢失的问题。
具体的存储过程是:
- 第一步将数据块从客户端上传到服务端(其中一个DataNode);
- 第二步是将这个数据块水平复制到其他两个DataNode,这步过程跟客户端没有关系。
2.2 NameNode
- 维护HDFS文件系统,是HDFS的master节点。
- 接受客户端的请求:上传文件、下载文件、创建目录等等
2.3 SecondaryNameNode
待补充
2.4 DataNode
数据以Blocks的形式储存在DataNode,其根据NameNode的指令对数据进行读写。