📜  Hadoop分布式文件系统中Namenode如何处理Datanode故障?

📅  最后修改于: 2021-10-27 06:41:09             🧑  作者: Mango

Hadoop文件系统是一个主/从文件系统,其中Namenode作为master,Datanode作为slave。 Namenode 是 Hadoop 文件系统的关键术语,因为它充当 HDFS的核心组件。如果 Namenode 宕机,那么整个 Hadoop 集群将无法访问并被视为死亡。 Datanode 存储实际数据并按照 Namenode 的指示工作。一个 Hadoop 文件系统可以有多个数据节点,但只有一个活动 Namenode。

数据节点和名称节点

Namenode的基本操作:

  • Namenode 维护和管理数据节点并将任务分配给它们。
  • Namenodde 不包含文件的实际数据。
  • Namenode 存储实际数据的元数据,如文件名、路径、数据块数、块 ID、块位置、副本数和其他从属相关信息。
  • Namenode 管理客户端对实际数据文件的所有请求(读、写)。
  • Namenode 执行文件系统命名空间操作,如打开/关闭文件、重命名文件和目录。

Datanode的基本操作:

  • Datanodes 负责存储实际数据。
  • 根据 Namenode 的指令,它执行创建/复制/删除数据块等操作。
  • 当 Datanode 之一宕机时,由于复制,它不会对 Hadoop 集群产生任何影响。
  • 所有 Datanode 在 Hadoop 集群中都是同步的,它们可以相互通信以进行各种操作。

如果其中一个 Datanode 在 HDFS 中出现故障会怎样?

Namenode 定期接收来自集群中每个 Datanode 的心跳和 Block 报告。每个 Datanode 每 3 秒向 Namenode 发送一次心跳消息。健康报告只是关于某个特定 Datanode 是否正常工作的信息。换句话说,我们可以说特定的 Datanode 是否还活着。
特定 Datanode 的块报告包含有关驻留在相应 Datanode 上的所有块的信息。当 Namenode 在 10 分钟内(默认情况下)没有收到来自特定 Datanode 的任何心跳消息,那么 Namenode 将相应的 Datanode 视为 Dead 或 failed。由于块将被复制不足,系统通过从对应 Datanode 的 Block 报告中获取所有块信息来启动从一个 Datanode 到另一个 Datanode 的复制过程。用于复制的数据直接从一个 Datanode 传输到另一个 Datanode,而没有数据通过 Namenode。