hadoop集群 secondary namenode 的作用,fsiamge和edit的关系「建议收藏」

hadoop集群 secondary namenode 的作用,fsiamge和edit的关系「建议收藏」hadoop集群 secondary namenode 的作用,fsiamge和edit的关系

大家好,又见面了,我是你们的朋友全栈君。

首先secondary namenode不是namenode的备份,而是辅助namenode管理的,分担namenode的压力。

此外,fsimage镜像文件读取数据到内存速度远快于读取edit日志文件,因此不能让edit的日志过大,所以定期把edit的内容合并到镜像磁盘中,这个合并过程就要用到secondary namenode。

 

 fsimage:filesystem image 的简写,文件镜像。二进制文件,存储HDFS文件和目录元数据

 Edits:二进制文件,每次保存fsimage之后到下次保存之间的所有HDFS操作,记录在Edit s文件。对文件的每一次操作,如打开、关闭、重命名文件和目录,都会生成一个edit记录。

 fstime:二进制文件,fsimage做完一次checkpoint后,将最新的时间戳写入到fstime

 

Secondary NameNode:在HA cluster中又称为standby node

 

 

  • 它的作用是:定期合并 fsimage 和 edits 日志,将 edits 日志文件大小控制在一个限度下
  • hadoop集群 secondary namenode 的作用,fsiamge和edit的关系「建议收藏」
  • namenode 响应 Secondary namenode 请求,将 edit log 推送给 Secondary namenode , 开始重新写一个新的 edit log
  • Secondary namenode 收到来自(HTTP方式) namenode 的 fsimage 文件和 edit log
  • Secondary namenode 将 fsimage 加载到内存,应用 edit log , 并生成一 个新的 fsimage 文件
  • Secondary namenode 将新的 fsimage 推送(HTTP方式)给 Namenode
  • Namenode 用新的 fsimage 取代旧的 fsimage , 在 fstime 文件中记下检查 点发生的时

SecondaryNameNode工作原理

namenode首先来说对于每个文件操作,Hadoop并不会都写到fsimage,这样是很慢的,但是每次操作在提交后运行前先写入edits编辑日志,当edits编辑日志文件大小超过64M(参数可以设定),或者时间超过1小时(参数可以设定),secondarynamenode就会做checkpoint的工作,向namenode发送请求,这时namenode产生临时空文件edits.new,secondarynamenode就会读取namenode中的edits和fsimage,然后进行合并,合并成fsimage.ckpt检查点,然后通过HTTP方式将fsimage.ckpt发送到NameNode,然后NameNode把fsimage.ckpt重命名为fsimage(覆盖原有fsimage文件),同时edits.new重命名为edits(覆盖原有edits文件)。

注意这里edits.new是个临时文件,只有NameNode或者SecondaryNameNode正在做checkpoint的时候存在。

namenode启动读取fsimage原理

当重新启动namenode的时候,NameNode启动时根据checkpoint时间加载最新的fsimage和edits文件到内存里,然后创建文件edits.new临时空文件,然后合并生成fsimage.ckpt检查点,edits.new重命名为edits(覆盖原有edits文件),fsimage.ckpt重命名为fsimage(覆盖原有fsimage文件),然后更新fstime时间 和VERSION版本

  使用secondary nameonde的原因:

 

Fsimage是HDFS存储元数据的文件,它不会在HDFS的每次文件操作(如打开、查询、创建、修改文件)后进行更新。而HDFS的每一次文件操作会增加一条edits记录。这样会出现edits记录不断增加的情况。

      这种设计不影响系统的恢复能力。因为如果Namenode失败了,元数据的最新状态可以通过从磁盘中读出fsimage文件加载到内存中来进行重新恢复,然后重新执行edits记录中的操作,这也正是NameNode重新启动时所做的事情。但是如果edits记录很多,NameNode启动时会花很长的时间来运行edits记录中的操作。在此期间,HDFS文件系统是不可用的。

      为了解决这个问题,Hadoop在NameNode之外的节点上运行了一个Secondary NameNode进程。Secondary NameNode定期从NameNode拷贝fsimage和edits记录到临时目录并合并成一个新的Fsimage,随后它将新的fsimage上传到NameNode,这样NameNode便会更新fsimage并删除原来的编辑日志。这个过程叫checkpoint。

Secondary NameNode不足之处:

  • 因为Secondary namenode并不是实时进行checkpoint,所以当还没有进行下一次checkpoint的时候namenode出现了硬件故障同时又没有通过NFS存储元数据,那么Namenode中自上次checkpoint之后到故障发生期间的所有edits文件将丢失。因为此时secondary namenode存的只有上一次的fsimage文件,没有最新的edits文件,无法通过secondary namenode进行这段时间内的数据恢复。

    Secondary NameNode不是NameNode的备份进程,如果NameNode宕机了,而SecondaryNameNode没有宕机,集群照样不能正常工作。如果要恢复集群工作,需要手动将Secondary NameNode上的fsimage文件拷贝到新的NameNode上面。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106119.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 单片机ds1302时钟程序(51单片机液晶显示程序)

    /*总体要求*//*在1602上显示年月日星期时分秒,并且按照秒来实时更新显示可以闹钟设定,到点报警功能,报警响起时,任意键可以取消报警四个按键,根据功能可以调节参数,分别为功能键,数值增大键,数值减少键,闹钟查看键,每次按键按下,蜂鸣器都会滴一声,利用DS12C887实现断电后,再次上电,时间仍可以准确显示*//*另外这个程序中文部分是学习了一个半月C语…

  • mybatis拦截器详解_短信拦截器

    mybatis拦截器详解_短信拦截器Mybatis拦截器介绍目录前言Interceptor接口注册拦截器Mybatis可拦截方法利用拦截器进行分页  拦截器的一个作用就是我们可以拦截某些方法的调用,我们可以选择在这些被拦截的方法执行前后加上某些逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑而不再执行被拦截的方法。Mybatis拦截器设计的一个初衷就是为了供用户在某些时候可以实现自己的逻辑而不必去动Mybatis…

  • 备份数据库的命令.sql

    备份数据库的命令.sql

  • 开启1521端口监听_Oracle数据库常用命令、Linux监听配置、Oracle linux下开放1521端口…

    开启1521端口监听_Oracle数据库常用命令、Linux监听配置、Oracle linux下开放1521端口…一、Linux下Oracle数据库常用命令Oracle用户下执行:$sqlplussystem/manager@file.sql执行sql脚本文件$sqlplussystem/manager登录sqlplus,使用system用户$sqlplus/nolog以不连接数据库的方式启动sqlplus,启动数据时会用到$lsnrctlstatus/stop/startOrac…

  • Snmp学习笔记

    Snmp学习笔记

  • S3C2440中断介绍

    S3C2440中断介绍1.1   S3C2440系统中断CPU和外设构成了计算机系统,CPU和外设之间通过总线进行连接,用于数据通信和控制,CPU管理监视计算机系统中所有硬件,通常以两种方式来对硬件进行管理监视:l  查询方式:CPU不停的去查询每一个硬件的当前状态,根据硬件的状态决定处理与否。好比是工厂里的检查员,不停的检查各个岗位工作状态,发现情况及时处理。这种方式实现起来简单,通常用在只有少量外设硬件的系

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号