HDFS NN 和 2NN

HDFS NN 和 2NN

NN 和 2NN 工作机制

思考:NameNode 中的元数据是存储在哪里的?

首先,我们做个假设,如果存储在 NameNode 节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage。

这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新 FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦 NameNode 节点断电,就会产生数据丢失。因此,引入 Edits 文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到 Edits 中。这样,一旦 NameNode 节点断电,可以通过 FsImage 和 Edits 的合并,合成元数据。

但是,如果长时间添加数据到 Edits 中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行 FsImage 和 Edits 的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryNamenode,专门用于 FsImage 和 Edits 的合并。

在这里插入图片描述
1)第一阶段:NameNode 启动
(1)第一次启动 NameNode 格式化后,创建 Fsimage 和 Edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求。
(3)NameNode 记录操作日志,更新滚动日志。
(4)NameNode 在内存中对元数据进行增删改。
2)第二阶段:Secondary NameNode 工作
(1)Secondary NameNode 询问 NameNode 是否需要 CheckPoint。直接带回 NameNode是否检查结果。
(2)Secondary NameNode 请求执行 CheckPoint。
(3)NameNode 滚动正在写的 Edits 日志。
(4)将滚动前的编辑日志和镜像文件拷贝到 Secondary NameNode。
(5)Secondary NameNode 加载编辑日志和镜像文件到内存,并合并。
(6)生成新的镜像文件 fsimage.chkpoint。
(7)拷贝 fsimage.chkpoint 到 NameNode。
(8)NameNode 将 fsimage.chkpoint 重新命名成 fsimage。

Fsimage 和 Edits 解析

NameNode被格式化之后,将在/opt/module/hadoop-3.1.3/data/tmp/dfs/name/current目录中产生如下文件。
在这里插入图片描述
(1)Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息。
(2)Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到Edits文件中。
(3)seen_txid文件保存的是一个数字,就是最后一个edits_的数字
(4)每 次NameNode启动的时候都会将Fsimage文件读入内存,加 载Edits里面的更新操作,保证内存中的元数据信息是最新的、同步的,可以看成NameNode启动的时候就将Fsimage和Edits文件进行了合并。

1)oiv 查看 Fsimage 文件
hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径
2)oev 查看 Edits 文件
hdfs oev -p 文件类型 -i 编辑日志 -o 转换后文件输出路径

CheckPoint 时间设置

1)通常情况下,SecondaryNameNode 每隔一小时执行一次。
[hdfs-default.xml]

<property>
 <name>dfs.namenode.checkpoint.period</name>
 <value>3600s</value>
</property>

2)一分钟检查一次操作次数,当操作次数达到 1 百万时,SecondaryNameNode 执行一次。

<property>
<name>dfs.namenode.checkpoint.txns</name>
 <value>1000000</value>
<description>操作动作次数</description>
</property>
<property>
 <name>dfs.namenode.checkpoint.check.period</name>
 <value>60s</value>
<description> 1 分钟检查一次操作次数</description>
</property>
### 回答1: Hadoop是一个分布式存储和计算系统。它由一组节点组成,每个节点都有存储和计算功能。 Hadoop中有两种节点:NameNode和DataNode。 NameNode是Hadoop的管理节点,负责维护文件系统的元数据,即文件名、块位置、块大小等信息。它还负责维护文件系统的命名空间,即文件目录结构。 DataNode是Hadoop的存储节点,负责存储文件的实际数据块。它接收来自NameNode的命令,将数据块写入磁盘,并在需要时将数据块读取出来。 Hadoop中还有一个组件:SecondaryNameNode。它的作用是定期从NameNode拉取元数据的副本,并与NameNode行同步。如果NameNode出现故障,可以使用SecondaryNameNode上的元数据副本来恢复。 简而言之,NameNode负责文件系统的元数据管理和命名空间维护,DataNode负责存储文件的实际数据块,SecondaryNameNode负责与NameNode的元数据同步。 ### 回答2: Hadoop中的NameNode(NN)和SecondaryNameNode(2NN)是HDFS(分布式文件系统)的重要组件,它们都承担着维护文件系统元数据的责任,但在工作原理上有所不同。 NameNode是HDFS的主节点,它负责管理文件系统的命名空间和其它重要的元数据信息。当客户端请求执行某个文件操作时,首先会与NameNode通信,NameNode会返回相应的数据块所在的DataNode列表,然后客户端才能与对应的DataNode行通信。NameNode还记录了文件的层次结构、文件块的位置、复本数量以及各个DataNode的健康状况等信息。NameNode将元数据信息存储在内存中,并定期将其持久化到本地磁盘以防止系统故障时的数据损失。因此,NameNode的工作可简单概括为处理元数据请求、维护文件系统结构、存储数据块位置信息。 SecondaryNameNode(或者称为CheckpointNode)并不是NameNode的替代物,仅用于辅助NameNode行元数据的备份和合并。SecondaryNameNode根据预定的时间间隔或事务数目,从主节点中得到元数据的快照,并将其存储在本地文件系统上。这样就可以在主节点出现故障的情况下,通过使用SecondaryNameNode上的快照信息来恢复主节点。此外,SecondaryNameNode还负责合并NameNode的编辑日志,将内存中的元数据信息与编辑日志中存储的增量变更合并,减轻了NameNode的元数据负担。 综上所述,NameNode是Hadoop中负责管理文件系统元数据的主节点,而SecondaryNameNode则是辅助NameNode行备份和合并工作的节点。它们的工作原理是相辅相成的,共同维护HDFS的可靠性和高可用性,在大规模数据存储和处理的分布式环境中起到了关键的作用。 ### 回答3: Hadoop中的NN(NameNode)和2NN(Secondary NameNode)是Hadoop分布式文件系统(HDFS)中的关键组件,它们共同协同工作来保障数据的高可用性和数据一致性。 NNHDFS的主节点,负责存储和管理文件系统的元数据信息,包括文件和目录的命名空间、块到数据节点的映射关系等。NN也负责处理客户端的文件操作请求,例如文件的读写、创建和删除等。NN将元数据以文件fsimage)和编辑日志(edits)的形式存储在本地磁盘上。NN的工作原理如下: 1. 当客户端发起文件写入请求时,NN接收到请求后会先将文件的元数据记录到内存中,并返回给客户端一个文件写入路径。 2. 当客户端结束文件写入后,NN文件划分为固定大小的数据块,并记录下每个数据块所在的数据节点信息。 3. 当客户端请求文件读取时,NN根据文件元数据信息获取到数据块的位置,并返回给客户端所需的数据节点信息。 2NNNN的辅助节点,它主要用来定期合并NN文件系统元数据和编辑日志,生成新的文件系统镜像(fsimage)和编辑日志快照(edits),以便在NN发生故障时行故障恢复。2NN的工作原理如下: 1. 2NN定期从NN获取文件系统的编辑日志,并将这些编辑日志合并到之前的镜像文件上,生成新的文件系统镜像和编辑日志快照。 2. 当NN发生故障时,2NN可以用其最新的文件系统镜像和编辑日志快照来帮助恢复NN,以保障文件系统的高可用性。 总结来说,NN负责管理HDFS文件系统元数据信息和处理客户端的文件操作请求,2NN则负责定期合并NN的元数据信息和编辑日志,以备份和恢复NN的故障。通过NN2NN的协同工作,Hadoop能够提供高可用性的分布式文件存储和处理服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值