先上关系图,说白了它们之间其实就是
“一主多重”
的关系:
1、NameNode介绍
NameNode:
- NameNode 是 HDFS 的核心。
- NameNode 也称为 Master。 c、 NameNode 仅存储 HDFS 的元数据:文件系统中所有文件的目录树,并跟踪整个集群中的文件。
- NameNode 不存储实际数据或数据集。数据本身实际存储在 DataNodes 中。
- NameNode 知道 HDFS 中任何给定文件的块列表及其位置。使用此信息 NameNode 知道如何从块中构建文件。
- NameNode 并不持久化存储每个文件中各个块所在的 DataNode 的位置信息,这些信息会在系统启动时从数据节点重建。
- NameNode 对于 HDFS 至关重要,当 NameNode 关闭时,HDFS / Hadoop 集群无法访问。
- NameNode 是 Hadoop 集群中的单点故障。
- NameNode 所在机器通常会配置有大量内存(RAM)。
2、DataNode介绍
DataNode:
- DataNode 负责将实际数据存储在 HDFS 中。
- DataNode 也称为 Slave。NameNode 和 DataNode 会保持不断通信。
- DataNode 启动时,它将自己发布到 NameNode 并汇报自己负责持有的块列表。
- 当某个 DataNode 关闭时,它不会影响数据或群集的可用性。NameNode 将安排由其他 DataNode 管理的块进行副本复制。DataNode 所在机器通常配置有大量的硬盘空间。因为实际数据存储在DataNode 中。
- DataNode 会定期(dfs.heartbeat.interval 配置项配置,默认是 3 秒)向 NameNode 发送心跳,如果 NameNode 长时间没有接受到 DataNode 发送的心跳, NameNode 就会认为该 DataNode 失效。
- block 汇报时间间隔取参数 dfs.blockreport.intervalMsec,参数未配置的话默认为 6 小时。
3、SecondaryNamenode介绍
SecondaryNamenode 的 Checkpoint 详细步骤:
- NameNode 管理着元数据信息,其中有两类持久化元数据文件:edits 操作日志文件和fsimage 元数据镜像文件。新的操作日志不会立即与 fsimage 进行合并,也不会刷到NameNode 的内存中,而是会先写到 edits 中(因为合并需要消耗大量的资源),操作成功之后更新至内存。
- 有 dfs.namenode.checkpoint.period 和 dfs.namenode.checkpoint.txns 两个配置,只要达到这两个条件任何一个,secondarynamenode 就会执行 checkpoint 的操作。
- 当触发 checkpoint 操作时,NameNode 会生成一个新的 edits 即上图中的 edits.new 文件,同时 SecondaryNameNode 会将 edits 文件和 fsimage 复制到本地(HTTP GET 方式)。
- secondarynamenode 将下载下来的 fsimage 载入到内存,然后一条一条地执行 edits 文件中的各项更新操作,使得内存中的 fsimage 保存最新,这个过程就是 edits 和 fsimage文件合并,生成一个新的 fsimage 文件即上图中的 Fsimage.ckpt 文件。
- secondarynamenode 将新生成的 Fsimage.ckpt 文件复制到 NameNode 节点。
- 在 NameNode 节点的 edits.new 文件和 Fsimage.ckpt 文件会替换掉原来的 edits 文件和 fsimage 文件,至此刚好是一个轮回,即在 NameNode 中又是 edits 和 fsimage 文件。
- 等待下一次 checkpoint 触发 SecondaryNameNode 进行工作,一直这样循环操作。
4、NameNode 和 SecondaryNamenode 的区别与联系:
区别:
- NameNode 负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
- SecondaryNameNode 主要用于定期合并命名空间镜像和命名空间镜像的编辑日志。
联系:
- SecondaryNameNode 中保存了一份和 namenode 一致的镜像文件(fsimage)和编辑日志(edits)。
- 在主 namenode 发生故障时(假设没有及时备份数据),可以从 SecondaryNameNode 恢复数据。
版权声明:本文为qq_17685725原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。