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在集群中会存储多个副本,好处是可以提高数据的可靠性,还可以提高访问的吞吐量
网友评论