2026-10-31·by Sijie Wang

federation

Federation: independent namespace volumes, DataNode block pools, ViewFS mount table, horizontal metadata scaling, and its limits.

Federation:一个视图下很多本账,和它切不开的东西

动机:一本账的天花板。 单台 NameNode 的内存和 RPC 吞吐是天花板,HA 抬不高它:HA 只是同一本账的两份,容量还是一本账的容量。命名空间长大、租户变多,一台机器的内存和处理能力迟早用完。

机制:拆账本,不拆目录。 多个 NameNode 各管自己的一片命名空间 volume,各自有 FsImage 和 EditLog,彼此不协调、不共享账本。DataNode 同时向所有 NameNode 注册,每个 NameNode 一个 Block Pool——属于那个命名空间的那批块——逻辑上分开存,绝不混淆。客户端通过 ViewFS 看到一个统一视图:挂载表把路径映射到命名空间,比如 /user 挂 A、/data 挂 B,每次操作只找一个 NameNode,就是拥有那条路径的那台。

好处。 加一台 NameNode 就多一片账本容量、多一份 RPC 能力,元数据可以横向扩。命名空间隔离租户:一个租户的命名空间爆长,不影响别人。每个命名空间还可以各自独立跑 HA,一处接管不惊动另一处。

局限,说直白。 Federation 不是自动切碎单个目录:一个目录树自己不会跨 NameNode,挂载布局必须事先设计好。跨命名空间的操作——改名、移动——不支持。它和小文件的解法是互补,不是替代:全堆在一个命名空间里的小文件,照样炸掉那个 NameNode,所以合并在先(见 small-files)。Federation 扩的是命名空间,合并治的是文件个数。

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 →