中间件速查手册
大数据存储元数据节点

NameNode 是什么?

记住“哪个文件的哪个块在哪几台机器上”,本身不存任何数据

类比:图书馆的检索台,只告诉你书在几号书架,书不在它手里

它到底存了什么

两样东西:命名空间(目录树、文件属性、权限)和块映射(每个块对应哪几个 DataNode)。这些信息全部放在内存里,所以 NameNode 的堆大小直接决定集群能存多少个块。

持久化靠 fsimage(某一时刻的内存快照)+ edits log(之后的每次改动)。启动时把 edits 回放到 fsimage 上,就还原出内存状态。

为什么是单点

HDFS 早期只有一个 NameNode,它挂了整个集群就没法读写(数据还在,但没人知道在哪)。现在标准做法是 NameNode HA:Active + Standby 两台,通过 JournalNode 共享 edits log,配合 ZooKeeper 做自动主备切换。

即便如此,NameNode 仍是“内存受限”的组件:1000 万个小文件大约需要 3GB 堆,这也是为什么小文件问题这么致命。

SecondaryNameNode 不是备份

它的名字有误导性:它不是 Standby,只负责定期合并 fsimage 和 edits,减轻主节点启动压力。真正的备份要用 HA 或 NameNode 快照。

它出现在这些中间件里

相关问题

相关概念