19
2021
01

namenode,datanode,secondaryNameNode分别是干什么的?

namenode,在基于主从架构的hdfs文件系统中是主节点,其主要职责就是对hdfs中的文件的元信息,副本数,文件目录树,block 数据节点信息;


datanode,它是从节点也是数据节点,基于本地磁盘存储 block(文件的形式),有相关数据块的长度、效验和、时间戳,与namnode保持心跳,汇报 block 状态。


secondaryNameNode,检查点节点,namenode 日志高可用的关键,其主要作用就是将namenode的元数据日志信息合并后备份,防止元数据丢失。




元信息:是数据文件的block大小,文件副本存储位置,副本数量,block 数量,主要体现在edits文件和fsimage文件。


副本数:hdfs 中同一个文件在多个节点中所存储的总数量,也是实现持久化和保证安全性的关键。


文件目录树:hdfs提供了一个可以维护的文件目录,该文件目录下存储着有关所有hdfs的文件。


block 数据节点信息:如a文件在01和02节点中存储,该信息称为数据节点信息。




edits:记录 client 执行创建,移动,修改文件的信息,同时体现了 HDFS 的最新的状态(二进制文件)。


它分布在磁盘上的多个文件,名称由前缀 edits 及后缀组成.后缀值是该文件包含的事务 ID,同一时刻只有一个文件处于可读写状态.为避免数据丢失,事务完成后 client 端在执行成功前,文件会进行更新和同步,当 NN 向多个目录写数据时,只有在所有操作更新并同步到每个副本之后执行才成功。


fsimage:记录的是数据块的位置信息、数据块的冗余信息(二进制文件)


由于 edits 文件记录了最新状态信息,并且随着操作越多,edits 文件就会越大,把 edits 文件中最新的信息写到 fsimage 文件中就解决了 edits 文件数量多不方便管理的情况。


没有体现 HDFS 的最新状态。


每个 fsimage 文件都是文件系统元数据的一个完整的永久性的检查点。




为什么引入 secondaryNameNode?


由于只有在重启时 fsimage 和 edits 才会进行合并,得到一个新的 fsimage 文件,但是在实际生产环境中很少会重启集群,NN 的重启需要花费很长时间,因为会有很多改动需要合并到 fsimage 文件上,如果 NN 挂掉,fsimage 文件没有更新内容,从而丢失很多改动。


但 editlog 日志大小会随着时间变的越来越大,导致系统重启,根据日志恢复元数据的时间会越来越长;


为了避免这种情况,引入检查点机制checkpoint,命名空间镜像 fsimage 就是 HDFS 元数据的持久性检查点,即将内存中的元数据落磁盘生成的文件;

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。