HDFS-NN和SNN的关系(nn,snn工作机制,fismage,edits解析,checkpoint时间设置,NN故障处理,安全模式)(五)

本文详细介绍了HDFS中NameNode(NN)和Secondary NameNode(SNN)的工作流程,包括NN启动时的fsimage和edits文件处理,SNN的checkpoint过程。此外,还解析了fsimage和edits文件的内容,提供了checkpoint时间设置的建议,以及面对NN故障时的恢复策略和安全模式的概念。
摘要由CSDN通过智能技术生成

NameNode简称为NN,SecondaryNameNode 简称为 SNN。

一.NN和SNN工作机制

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解析

1.概念

namenode被格式化之后,将在/opt/hadoop/data/tmp/dfs/name/current目录中产生如下文件:

edits_0000000000000000000
fsimage_0000000000000000000.md5
seen_txid
VERSION

Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件idnode的序列化信息

Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到edits文件中

seen_txid文件保存的是一个数字,就是最后一个edits_的数字

每次NameNode启动的时候都会将fsimage文件读入内存,并从00001开始到seen_txid中记录的数字依次执行每个edits里面的更新操作,保证内存中的元数据信息是最新的,同步的,可以看成NameNode启动的时候就将fsimage和edits文件进行了合并。

2.使用oiv查看fsimage文件

(1)查看oiv和oev命令

[root@hadoop00 logs]# hdfs
 oiv                  apply the offline fsimage viewer to an fsimage
 oev                  apply the offline edits viewer to an edits file

(2)基本语法

hdfs oiv -p 文件类型 -i 镜像文件 -o 转换后文件输出路径

(3)示例

[root@hadoop00 current]# cd /opt/install/hadoop/data/tmp/dfs/name/current

[root@hadoop00 current]# hdfs oiv -p XML -i fsimage_0000000000000010957 -o /opt/install/hadoop/fsimage.xml
[root@hadoop00 current]# cat /opt/install/hadoop/fsimage.xml

大概格式如下

<?xml version="1.0"?>

<fsimage><version>
    <layoutVersion>-60</layoutVersion>           <onDiskVersion>1</onDiskVersion>   <oivRevision>5724a4ad7a27f7af31aa725694d3df09a68bb213</oivRevision></version>
    
<NameSection>
    <namespaceId>1847371313</namespaceId><genstampV1>1000</genstampV1>
    <genstampV2>2653</genstampV2><genstampV1Limit>0</genstampV1Limit><lastAllocatedBlockId>1073743477
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值