NameNode 里有个叫 Namespace 的,它是维护整个 HDFS 文件系统的目录树结构及目录树上的状态变化的,比如一个目录树长这样:
/
├── user
│ ├── aaa.txt
│ ├── bbb.avi
├── tmp
├── opt
│ ...
当新增了一个目录/文件,或者删除了一个目录/文件时,Namespace 就会更新这个目录树。
NameNode 里有还有个叫 BlockManager的,它是用来维护整个文件系统中与数据块相关的信息及数据块的状态变化的,比如,/user/bbb.avi
这个视频文件很大,它会被切分后存放在不同的地方(Block),BlockManager 就是用来记录这些 Block 到底是在哪台机器(DataNode)上。
当我们想要查看 HDFS 上的某个文件时,都需要先问问 NameNode,这个文件它被切成了几小块(Namespace的作用),每个小块都保存在哪台机器上(BlockManger的作用),然后我们再按顺序去那些机器(DataNode)上一小块一小块地去查看文件。
当 HDFS 里的目录和文件变多,Namespace 要维护的目录树就会变大;同时,文件数量增加,BlockManager 要记录的文件被切分后的 Block 信息就多了。这两样东西都是维护在 NameNode 的内存里的,所以呢,慢慢地 NameNode 占用的内存就跟着变大了。
—————END—————
喜欢本文的朋友们,欢迎关注公众号DataChat,收看更多精彩内容~
文中「澜妹、澜宝」使用了数澜的吉祥物,数澜科技:让数据用起来!