Hadoop中HDFS的namenode和datanode的知识总结

重点内容
一、NameNode和DataNode的基本介绍
1、NameNode的功能:(1)内存中完整的元数据(2)磁盘中近乎完整的元数据镜像文件(3)记录元数据操作信息的edits.log(4)存储block块和datanode间的映射关系。
2、NameNode的重要性(地位):名称节点作为中心服务器,是HDFS的主从结构的担任中心枢纽,存储着元数据等重要信息。
3、DataNode的功能:作为分布式文件系统的工作节点,BataNode有着以下作用(1)负责文件系统或者客户端的读写操作(2)在NameNode的调度下对数据块进行创建、存储、删除、备份等操作。
二、NameNode和DataNode的重点介绍
1、NameNode的工作原理
NameNode中最终是将元数据存储在内存中,NameNode中有两个核心的数据结构来辅助NameNode,即FSImage和EditLog。EditLog中存储客户端所执行的所有的操作信息,FSimage中是包含HDFS文件系统的所有目录和文件idnode序列化信息,第一次启动时,NameNode格式化,首先可能将所有操作直接写入FSImage里,再将FSImage的内容加载到内存中,然后执行EditLog文件中的各项操作,使得内存中的数据保持最新。完成以上操作后,就会创建一个新FSImage文件和一个空的EditLog文件,此时NameNode启动成功并开始进入正常运行状态,之后HDFS更新的操作都写入EditLog中,随着不断地将操作信息写入EditLog,EditLog文件慢慢变大,当EditLog的内存快满时,辅助名称节点SecondaryNameNode就会将EditLog和FSImage加载到内存并合并,生成新的FSImage.checkpoint,拷贝FSImage.checkpoint到NameNode,NameNode将FSImage.checkpoint重新命名为FSImage。
Hadoop中HDFS的namenode和datanode的知识总结
2、相关问题:
   (1)辅助名称节点SecondaryNameNode功能:1、将EditLog、FSImage合并2、如果NameNode挂掉,SecondaryNameNode中的数据可以拿来充当不完整的副本,但是不会导致数据完成丢失。
   (2)为什么会将客户端对文件的操作信息存入EditLog中,而不直接存到FSImage中:因为FSImage的内存比较大,存一次,修改一次,文件并不能及时响应,不利于性能的提升。
3、BataNode的工作原理:
  DataNode相对于NameNode的工作机制原理来说比较简单,DataNode启动后向NameNode主动注册,之后DataNode注册成功,DataNode对数据块进行存储、创建、删除和备份。一个数据块在DataNode上以文件的形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和以及时间戳。其中DataNode和NameNode之间通过每3秒一次的心跳机制来保证两者之间互相通信的正常,心跳返回的结果带有NameNode给DataNode的命令。如果10分钟之内没有响应,则DataNode有可能当机或者堵塞,若是当机了则需要将DataNode重新启动,注册,若是堵塞则是将该节点换掉添加新的节点。
  Hadoop中HDFS的namenode和datanode的知识总结