写在前面

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系

解答

在这里插入图片描述

HDFS采用了主从结构构建, NameNode为 Master(主),其他 DataNode为 Slave(从)。

文件以数据块的形式存储在 DataNode中。

一个HDFS分布式文件系统的架构如图所示:

在这里插入图片描述

  1. 连线①

    NameNode是HDFS系统中的管理者,对 Metadata元数据进行管理。

    NameNode负责管理文件系统的命名空间,维护文件系统的文件树及所有的文件和目录的元数据。

  2. 连线②

    当 NameNode 发生故障时,使用 SecondaryNameNode 进行数据恢复。

    SecondaryNameNode一般在一台单独的物理计算机上运行,与 NameNode 保持通信,按照一定时间间隔保存文件系统元数据的快照,以备 NameNode发生故障时进行数据恢复。

    具体可以参考我的另一篇博客——SecondaryNameNode有什么作用?

  3. 连线③

    HDFS中的文件通常被分割为多个数据块,存储在多个 DataNode 中。

    DataNode上存了数据块ID和数据块内容,以及它们的映射关系。

    文件存储在多个 DataNode 中,但 DataNode 中的数据块未必都被使用(如上图中的空白块)。

  4. 连线④

    NameNode 中保存了每个文件与数据块所在的 DataNode 的对应关系,并管理文件系统的命名空间。

    DataNode 定期向 NameNode 报告其存储的数据块列表,以备使用者直接访问 DataNode 获得相应的数据。

    DataNode还周期性地向 NameNode 发送心跳信号提示 DataNode 是否工作正常。

    DataNode 与 NameNode 还进行交互,对文件块的创建、刪除、复制等操作进行指挥与调度,只有在交互过程中收到了 NameNode 的命令后,才开始执行指定操作。

  5. 连线⑤

    Client 是HDFS文件系统的使用者,在进行读写操作时, Client 需要先从 NameNode 获得文件存储的元数据信息。

  6. 连线⑥⑦

    Client 从 NameNode 获得文件存储的元数据信息后,与相应的 DataNode 进行数据读写操作。

上一篇 下一篇