zoukankan      html  css  js  c++  java
  • NameNode && Secondary NameNode工作机制

    NameNode && Secondary NameNode工作机制

    1)工作流程

    2)  fsimage和edits

    NameNode是HDFS的大脑,它维护着整个文件系统的目录树,以及目录树里所有的文件和目录,这些信息以俩种文件存储在文件系统:一种是命名空间镜像(也称为文件系统镜像,File System Image,fsimage),即HDFS元数据的完整快照,每次NameNode启动的时候,默认会加载最新的命名空间镜像,另一种是命令空间镜像的编辑日志(Edit log)。

    fsimage文件其实是文件系统元数据的一个永久性检查点,但并非每一个写操作都会更新这个文件,因为FSImage是一个大型文件,如果频繁地执行写操作,会使系统运行极为缓慢。解决方案是NameNode只将改动内容预写日志,即写入命名空间镜像的编辑日志.随着时间的推移,编辑日志会变得越来越大,那么一旦发生故障,将会话费非常多的时间来回滚操作,所以就像传统的关系数据库一样,需要定期地合并fsimage和编辑日志。如果由NameNode来做合并操作,那么NameNode在为集群提供服务时可能无法提供足够的资源,为了彻底解决这一问题,Secondary NameNode应允而生。

    3)第一阶段:NameNode 启动

    • (1)第一次启动 NameNode 格式化后,创建 fsimage 和 edits 文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
    • (2)客户端对元数据进行增删改的请求。
    • (3)NameNode 记录操作日志,更新滚动日志。
    • (4)NameNode 在内存中对数据进行增删改查。

    4)第二阶段:Secondary NameNode 工作

    • (1)Secondary NameNode询问NameNode是否需要checkpoint。
    • (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。

    默认情况下,该过程每小时发生一次,或者当NameNode的编辑日志文件到达默认的64MB也会触发。

     

  • 相关阅读:
    C语言编程获取PE文件导出表内容
    C语言编程获取PE文件导入函数
    C语言编程获取PE文件Section_Header
    C语言编程获取PE文件Option_Header
    C语言编程获取PE文件File_Header内容
    C语言编程获取PE文件DOS头
    Spring源码剖析开篇:什么是Spring?
    重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
    重新学习MySQL数据库12:从实践sql语句优化开始
    重新学习MySQL数据库10:MySQL里的那些日志们
  • 原文地址:https://www.cnblogs.com/dearroy/p/14136693.html
Copyright © 2011-2022 走看看