转至元数据结尾
- 创建: 杨晨,最新修改于: 三月 22, 2018
转至元数据起始
主服务器管理文件的 命名空间
凡是对文件系统命名或其他属性的修改信息都会保存到这里。
比如,有个名为Eva的文件放在目录/usr下,现在要将他改名为zuo,移动到/usr/local目录下,这些修改日志都会被 NameNode的edit log文件记录。
存放HDFS的 元数据 信息
即文件系统的目录树以及追踪集群文件,简单来说就是NameNode不实际存储数据,但是他知道数据的存放位置。这些信息不是长久固定的,每次启动系统后需要重新从数据节点获取这些信息。
比如,向上篇中的3号block放到从节点003,008,010这个节点上,在NaemNode中就会有一个信息:“3号数据块放在003,008,010这三个节点上”。
数据块位置分配
每个数据文件被切分成128MB的大小的数据块之后,主节点会查看各个从节点的内存情况,选取内存较合适的从节点存放数据块。
数据复制
每个DataNode需要定期向NameNode汇报他的“心跳”,也就是说NameNode需要定期接收这些“心跳”信息,一旦某个DataNode没有向NameNode证明它还“活着”,NameNode就会标记为“死亡”,不再向它请求IO, 这个DataNode上的数据就不能被HDFS使用,那么,NameNode就会启动数据复制,将这个死掉的节点上的数据复制到一个新的节点上。
接收用户操作请求
客户端传入的请求是不会直接由DataNode执行操作的,而是由DataNode将请求发送给NameNode,然后由NameNode判断哪个DataNode来执行这个操作,当然这个DataNode上必须有需要的数据。
选择的依据是什么呢?
在第一篇中有提到“移动操作比移动数据成本小”这个概念,就是为了降低过度的IO处理造成的速度低,即NameNode判断哪个从节点适合执行这个命令,将命令移动到从节点上对数据进行任务。
总结:
NameNode是HDFS文件系统的管理者,它负责存放一些“高级”信息,具有绝对指挥权。
namenode具体的内存使用见