学习大数据之hadoop day2

本文深入探讨Hadoop中SecondaryNamenode的角色与功能,解释其如何通过合并edits.log与fsimage文件,保护Namenode元数据免受意外丢失。阐述在断电与重复断电情况下,SecondaryNamenode如何确保数据恢复至断电前状态,以及Namenode进入安全模式后的系统恢复流程。

学习大数据之hadoop day2

secendaryNamenode

SecendaryNamenode 看上去 好像Namenode 的替代品 ,但是加上和namenode功能不太一样

SecendaryNamenode(以下简称snn)是用于保护Namenode(下简称nn)产生的元数据 而产生的

的一个功能,我们都知道nn运行时所产生的元数据是储存在内存中的,我们都知道,如果内存断电,或者意外关机

那么我们集群所收集到的数据就会全部丢失,所以,着这种需求下,我们用到了snn ,可以将nn产生的元数据持久化

到硬盘

我们的集群运行,操作,进行读写操作的时候,nn内部会产生两个文件 edits.log 和 fsimage

edits.log 是记录集群操作的文件,没有操作不产生数据,

fsimage 是系统日志,即便没有操作也会产生日志信息

没到我们设定的条件【1】 ,snn 会将 edits.log 和 fsimage 文件 合并 并持久化到硬盘

       1:关于条件,默认edits.log 文件大小超过 64mb 或者 时间超过3600s(1个小时)就会由 snn 执行持久化

持久化完毕之后,nn会将由edits.log 与 fsimage 合并的文件 fsimage 作为新的 fsimage 文件

同时 edits.log 会被保存在nn ,并且重新创建一个edits.log 文件继续记录系统的操作,直到下一次

snn 拉取 edits.log 和 fsimage 文件

我们要知道 snn 是永远不可以能取代 nn 的工作 ,snn相当于一个记录员,他会忠实的记录系统的操作
断电

上面我们说了snn 会把 日志文件 持久化到硬盘 ,所以,当我们遇到意外断电的时候,虽然,在内存的数据丢失了,

当我们服务器,计算机重启的时候,会自动读取储存在磁盘中的日志文件,这样数据就会恢复到断电之前的状态

 当然这个机制也并非完美,我们可以设想一种情况,我们知道snn会在 nn 的edits.log文件到达64mb 或 1个小时后 自动持久化

如果,我们在读写非常重要的文件时候断电了,那时候又没有触发自动吃菊花的机制,那我们的数据还是丢失了,当然,之可以通过

一些措施来避免,但是还是暴露了一些问题
重复的断电

当短时间服务器,计算机意外宕机3次 nn就会进入安全模式

安全模式

当我们进入安全模式我们会做一下事情

1 恢复系统的状态(从硬盘读取日志文件)

2 检查所有Datanode的信息

3 对有问题的dn进行修复

关于Datanode 挂掉的问题

假设 我们有三个从节点dn1 dn2 dn3 当上传block时 dn3挂掉了 nn 会从dn1 dn2 继续读取 而原来dn3 的部分

会 由 放置在 dn1 和 dn2 中的备份继续提供 ,如果传输到中途,dn3恢复了,这时nn也不会从dn3读取数据了,

因为 对于nn来说 dn3是一个全新的节点,也就是dn4,而且,dn4中也不具备dn3中的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值