2026-10-31·by Sijie Wang

namenode

NameNode keeps directory tree, block lists and block locations, no file content; a role, not special hardware; one logical NameNode with or without HA.

NameNode:一个字节数据都不存的记账者

它存三样东西,别的一概不存。 NameNode 存目录树、每个文件的块列表与顺序、每块所在的 DataNode。它不存任何文件内容。类比就是图书馆前台的目录:目录告诉你每本书在哪个架子上,但书本身在架子上,目录里没有书的内容。架子就是 DataNode。

它是职位,不是特殊硬件。 NameNode 不需要什么特殊机器。生产上它通常独占一台普通服务器,独占的原因是元数据全在内存里、需要大内存,不是硬件有什么特别。测试环境里它可以和其他角色同机。拿 leader 来类比是成立的:像 Raft leader、Kafka controller 一样,它是一个由某台机器担任的职位,权威来自职位本身。

一台还是两台? 没有 HA 时,字面意义上就是一台,是单点:一死,集群的地图就没了,直到它重启(账本是持久化的,见 ledger-persistence,但它宕机期间没人提供服务)。有 HA 时是两台,但同一时间只有一个 active 写者,standby 把自己的账本副本保持同步。对外它仍然是“一个 NameNode”:客户端用一个逻辑名,不关心今天是哪台物理机在当 active。

这个形状推出什么。 账本在内存里,所以它的容量由文件个数决定,不由数据量决定,算术见 block-size-and-metadata-math。它不存数据,所以它永远不会成为数据瓶颈:读写都绕过它,见 read-path 和 write-path。而它又是单一逻辑权威,所以这个集群里的其他机制——lease、safe mode、fencing——都是为了保住同一条性质:这本账同一时间恰好只有一个写者。这些机制见 writer-lease、safe-mode、ha-and-fencing。

about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →