1. Datanode逻辑结构
Datanode 以存储数据块(Block)的形式保存HDFS文件,同时Datanode 还会响应HDFS 客户端读、写数据块的请求。Datanode会周期性地向Namenode上报心跳信息、数据块汇报 信息(BlockReport)、缓存数据块汇报信息(CacheReport)以及增量数据块块汇报信息。 Namenode 会根据块汇报的内容,修改Namenode的命名空间(Namespace),同时向Datanode 返回名字节点指令。Datanode会响应Namenode返回的名字节点指令,如创建、删除和复制 数据块指令等。

HDFS 1.x 架构 #

缺点 #

HDFS1.X架构使用一个Namenode来管理文件系统的命名空间以及数据块信息,这使得 HDFS的实现非常简单,但是单一的Namenode会导致以下缺点。

  • 由于Namenode在内存中保存整个文件系统的元数据,所以Namenode内存的大小直 接限制了文件系统的大小。
  • 由于HDFS文件的读写等流程都涉及与Namenode交互,所以文件系统的吞吐量受 限于单个Namenode的处理能力。
  • Namenode作为文件系统的中心节点,无法做到数据的有效隔离。
  • Namenode是集群中的单一故障点,有可用性隐患。
  • Namenode实现了数据块管理以及命名空间管理功能,造成这两个功能高度耦合,难 以让其他服务单独使用数据块存储功能。

HDFS Federation #

优点 #

  • 支持Namenode/Namespace的水平扩展性,同时为应用程序和用户提供了命名空间卷 级别的隔离性。
  • Federation架构实现起来比较简单,Namenode(包括Namespace)的实现并不需要太 大的改变,只需更改Datanode的部分代码即可。例如将BlockPool作为数据块存储 的一个新层次,以及更改Datanode内部的数据结构等。

Datanode逻辑结构 #