查看NameNode.java源文件
The NameNode controls two critical tables:
- filename->blocksequence (namespace)
- block->machinelist ("inodes")
The first table is stored on disk and is very precious.
The second table is rebuilt every time the NameNode comes up
—— NameNode.java
文件名和blocksequence(块顺序)信息永久保存在namenode节点上
但是block位置信息则是存在于内存之中
查看Goole File System论文第2.6.2节(摘录)
namenode节点并不永久保存datanode所拥有副本的信息,而是在每次启动的时候轮询datanode获取这些信息,并且通过周期性的心跳获取最新的信息。
这种设计简化了在有datanode服务器加入集群、离开集群、更名、失效、以及重启的时候,namenode服务器和datanode服务器数据同步的问题。