• 【基础组件10】hadoop拓展(三)NameNode工作机制


    一、Hadoop NameNode详解

    参考:

    https://blog.csdn.net/lb812913059/article/details/78713634   (主要看这篇即可)

    https://blog.csdn.net/u010846741/article/details/52369527

    其他拓展HDFS参考:

    https://blog.csdn.net/sjmz30071360/article/details/79877846

    https://blog.csdn.net/nihaoa50/article/details/88419432

    NameNode在内存中保存着整个文件系统的名字空间和文件数据块的地址映射(Blockmap)。如果NameNode宕机,那么整个集群就瘫痪了
    整个HDFS可存储的文件数受限于NameNode的内存大小
    这个关键的元数据结构设计得很紧凑,因而一个有4G内存的Namenode就足够支撑大量的文件和目录。

    一般情况下,单namenode集群的最大集群规模为4000台

    1、NameNode元数据信息 

    在内存中加载文件系统中每个文件和每个数据块的引用关系(文件、block、datanode之间的映射信息) 。
    数据会定期保存到本地磁盘,但不保存block的位置信息而是由DataNode注册时上报和在运行时维护。

    2、NameNode职责
    全权管理数据块的复制,周期性的接受心跳和块的状态报告信息(包含该DataNode上所有数据块的列表)
    若接受到心跳信息,NN认为DN工作正常,如果在10分钟后还接受到不到DN的心跳,那么NN认为DN已经宕机
    这时候NN准备要把DN上的数据块进行重新的复制。
    块的状态报告包含了一个DN上所有数据块的列表,blocks report 每个1小时发送一次


    3、NameNode容错机制 

    运行一个辅助的Namenode(SecondaryNamenode)。 事实上SecondaryNamenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与操作日志文件(edit log)合并,以防止操作日志文件(edit log)变得过大。通常,SecondaryNamenode 运行在一个单独的物理机上,因为合并操作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。

    4.NameNode的存储目录

    hdfs的命名空间存储在namenode的内存中,EditLog/FsImage存储在namenode本地的文件系统中

    EditLog事务日志:

      记录发生在文件系统元数据上的所有变化。

      比如: 在文件系统中创建一个文件,namenode就会在EditLog中插入一条记录标记一下。

         同样的,修改一个文件的副本因子同样会在触发EditLog中插入一条记录。

    FsImage文件:

      简单的说,Fsimage就是在某一时刻,整个hdfs的快照

      就是这个时刻hdfs上所有的文件块和目录,分别的状态,位于哪些个datanode,各自的权限,副本个数等。

      和编辑日志不同,它不会在每个文件系统的写操作后都进行更新

      因为写出fsimage文件会非常慢(fsimage可能增长到GB大小)。

      这种设计并不会影响系统的恢复力 如果NameNode失败,可以通过读出磁盘中fsimage文件加载到内存中来进行重建恢复

  • 相关阅读:
    c语言的按位运算符
    数据结构(六)——二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
    【传感器】BMA253 数字,三轴加速度传感器
    并发编程的几种形式
    php:PHP解析xml的4种方法
    spring boot: 一般注入说明(五) @Component, application event事件为Bean与Bean之间通信提供了支持
    spring boot: 一般注入说明(四) Profile配置,Environment环境配置 @Profile注解
    spring boot: Bean的初始化和销毁 (一般注入说明(三) AnnotationConfigApplicationContext容器 JSR250注解)
    spring boot: EL和资源 (一般注入说明(二) @Service注解 @Component注解)
    spring boot: scope (一般注入说明(一) @Autowired注解)
  • 原文地址:https://www.cnblogs.com/Agnes1994/p/12227890.html
Copyright © 2020-2023  润新知