hdfs架构与读写策略
一、简介hdfs架构
一个HDFS 文件系统包括一个主控节点NameNode 和一组DataNode 从节点。
(1)NameNode是一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求。
NameNode 保存了文件系统的三种元数据:
1) 命名空间, 即整个分布式文件系统的目录结构;
2 ) 数据块与文件名的映射表;
3) 每个数据块副本的位置信息,每一个数据块默认有3 个副本
(2)DataNode 用来实际存储和管理文件的数据块
1)文件中的每个数据块默认的大小为64MB; 同时为了防止数据丢失, 每个数据块默认有3 个副本,且3 个副本会分别复制在不同的节点上,以避免一个节点失效造成一个数据块的彻底丢失。
2)每个DataNode 的数据实际上是存储在每个节点的本地Linux 文件系统中
(3)NameNode 上可以执行文件操作,比如打开、关闭、重命名等; 而且NameNode 也负责向DataNode分配数据块并建立数据块和DataNode 的对应关系。
(4)DataNode 负责处理文件系统用户具体的数据读写请求,同时也可以处理NameNode 对数据块的创建、删除副本的指令。
(5)典型的部署模式采用NameNode单独运行于一台服务器节点上,其余的服务器节点,每一台运行一个DataNode。
二、hdfs读写策略
(1)首先,用户的应用程序通过HDFS 的客户端程序将文件名发送至NameNode 。
(2)NameNode 接收到文件名之后,在HDFS 目录中检索文件名对应的数据块,再根据数据块信息找到保存数据块的DataNode 地址,将这些地址回送给客户端。
(3)客户端接收到DataNode 地址之后,与DataNode 并行地进行数据传输操作,同时将操作结果的相关日志(比如是否成功,修改后的数据块信息等)提交到NameNode 。

浙公网安备 33010602011771号