HDFS的实现机制

HDFS 整体架构

HDFS 是一个主从 Master/Slave 架构。一个 HDFS 集群包含一个 NameNode,这是一个 Master Server,用来管理文件系统的命名空间,以及调节客户端对文件的访问。一个 HDFS 集群还包括多个 DataNode,用来存储数据。

系统结构:


主要角色:

NameNode:Master节点,大领导。1. 管理数据块映射;2. 处理客户端的读写请求;3. 配置副本策略;4. 管理HDFS的名称空间。5. namenode 内存中存储的是 = fsimage + edits。

SecondaryNameNode:小弟,分担大哥namenode的工作量。SecondaryNameNode负责定时默认1小时,从namenode上,获取fsimage和edits来进行合并,然后再发送给namenode。减少namenode的工作量。NameNode的冷备份。

DataNode:Slave节点,奴隶,干活的。1. 存储client发来的数据块block;2. 执行数据块的读写操作。

fsimage:元数据镜像文件(文件系统的目录树)

edits:元数据的操作日志(针对文件系统做的修改操作记录)


存储过程:

如有一个512M的test文件上传到/wordcount/input/目录中,则文件会被分别切分成4块,放置到三个DataNode中

若有一个另一个客户端需要访问test.txt文件(当前test.txt文件并不是完整存在的,而是别分割为4块,且存储在三个DataNode中),需要寻找到文件切块的存储DataNode位置。而namenode中则存储了文件块的路径信息。因此,客户端访问hdfs中的文件,则先需要访问namenode中元数据信息。

多个副本在多个datanode中存储可以保证文件系统的高可靠性和提高吞吐性,HDFS中默认一个文件块具有三个副本。

主要特点:

1、hdfs是通过分布式集群来存储文件,为客户端提供了一个便捷的访问方式,就是一个虚拟的目录结构

2、文件存储到hdfs集群中去的时候是被切分成block的

3、文件的block存放在若干台datanode节点上

4、hdfs文件系统中的文件与真实的block之间有映射关系,由namenode管理

5、每一个block在集群中会存储多个副本,好处是可以提高数据的可靠性,还可以提高访问的吞吐量

推荐阅读更多精彩内容