HDFS是整个hadoop体系的基础,负责数据的存储与管理。HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器上。
1.架构体系
HDFS即Hadoop Distributed File System的简称,采用Master/Slave主从结构模型来管理数据。在设计上采用了分而治之的思想,将单服务器无法承受的大量的数据分布在多台服务器上。HDFS主要由Client、NameNode、DataNode,SecondaryNameNode这四部分组成。
client:
1.上传文件时按照Block块大小进行文件的切分;
2.和NameNode交互,获取文件位置信息;
3.和DataNode交互,读取和写入数据;
4.管理和访问整个HDFS。
NameNode:
1.HDFS的元数据节点
master
,是一个主管,每个HDFS集群只有一个Action的NameNode对外提供服务
2.管理HDFS的名称空间(
nameSpace
)和数据块(Block)映射信息,配置相关副本信息,处理客户端请求,一个文件对应块的名字以及块被存储在哪里,以及每一个文件备份多少都是由NameNode来管理。
nameSpace:
nameSpace维护着文件系统树(FileSystem Tree)和文件树上的所有文件及文件夹的元数据(metadata),并使用fsimage和editlog这两个文件来管理这些信息。fsimage(空间镜像文件),它是文件系统元数据的一个完整的永久检查点,内部维护的是最近一次检查点的文件系统树和整棵树内部的所有文件和目录的元数据,如修改时间,访问时间,访问权限,副本数据,块大小,文件的块列表信息等等。editlog(编辑日志文件),当HDFS系统发生打开、关闭、创建、删除、重命名等操作产生的信息除了在保存在内存中外,还会持久化到编辑日志文件。比如上传一个文件后,日志文件里记录的有这次事务的tx id,文件的inode id,数据块的副本数,数据块的id,数据块大小,访问时间,修改时间等。
文件Block映射信息:
作为一个master,NameNode需要记录每个文件的每个块所在的数据节点的位置信息,也就是我们常说的元数据信息metaData。但是由于NameNode并不进行持久化