• HDFS与HADOOP


    再写  HDFS Federation机制的时候,发现基础不扎实,需要将之前的hadoop再详细记录一下原理(重点只说Hadoop2.0版本):

    Hadoop2.0版本,引入了Yarn。核心:HDFS+Yarn+Mapreduce

    Yarn是资源调度框架。能够细粒度的管理和调度任务。此外,还能够支持其他的计算框架,比如spark等。

    存储的基础知识以及原理:

    元数据信息和具体数据,分别对应namenode和datenode:

    namenode工作职责:

    1.要知道管理有哪些机器节点,即有哪些datanode。比如ip信息等。

    2.要管理文件信息,文件名、文件多大、文件被切成几块、以及每一块的存贮位置信息(存在哪个datanode节点上了),即管理元数据信息。

    3.要有一个机制要知道集群里datanode节点的状态变化。可以rpc心跳机制来做到。

    4.namenode存在单点故障问题,可以再引入一台管理者节点。

    5.datanode挂掉后,可能数据就丢失,文件就不完整了,要有一个备份机制,一般来说,一个文件块,有3个备份,本机一份,同一机架的其他datanode有一份,另外一机器的机器上有一份。

    管理元数据信息,文件名,文件大小,文件块信息等。

    namdenode把元数据信息存到内存里,为了快速查询,此外为了应对服务宕机而引起的元数据丢失,也要持久化到本地文件里。

    namdenode不存储具体块数据,只存储元数据信息;datanode用于负责存储块数据。

    fsimageedits

    fsimage 文件,记录元数据信息的文件

    edits文件,记录元数据信息改动的文件。只要元数据发生变化,这个edits文件就会有对应记录。

    fsimage和edits文件会定期做合并,这个周期默认是3600s。fsimage根据edits里改动记录进行元数据更新。

    元数据信息如果丢失,HDFS就不能正常工作了。

    hadoop namenode -format 这个指令实际的作用时,创建了初始的fsimage文件和edits文件。

    namenode对于元数据信息的管理,放在内存一份,供访问查询,也会通过fsimage和edits文件,将元数据信息持久化到磁盘上。

    Secondarynamenode

    负责将fsimage文件定期和edits文件做合并,合并之后,将合并后的元数据文件fsimage传给namenode。这个SN相当于namenode辅助节点。

    Hadoop集群最开始启动的时候,创建Fsimage和edits文件,这个namenode做的,此外,namenode会做一次文件合并工作,这么做的目的是确保元数据信息是最新的,以为上次停集群的时候,可能还没来的及做合并。但以后的合并工作,就交给SN去做了。这种SN机制是Hadoop1.0的机制。

    结论:Hadoop1.0的SN达不到热备效果,达不到元数据的实时更新,也就意味着了当namenode挂了的时候,元数据信息可能还会丢失,所以,Hadoop1.0版本的namenode还是单点故障问题。

    datanode:

    数据节点。用于存储文件块。为了防止datanode挂掉造成的数据丢失,对于文件块要有备份,一个文件块有三个副本。

     

     

    参考:https://www.cnblogs.com/tieandxiao/p/8799287.html

  • 相关阅读:
    【转】PHP foreach 小结
    【转】div,p,span,ul,li,dl,dt,dd,a,img,h,strong,em用法
    【转】网页制作中的CSS+DIV:dl,dt,dd分别表示什么意思啊?请说明啊,谢谢有什么功能?
    【转】[教程] CSS入门3:如何插入CSS样式
    PHP输出多个空格
    【转】浅谈HTTP中Get与Post的区别
    HDOJ 2433 Counter Strike 逆序对 线段树
    hdu 4193 Nonnegative Partial Sums 单调队列
    vijos 1750 建房子 单调队列
    poj 2155 Matrix 二维树状数组
  • 原文地址:https://www.cnblogs.com/jie-2019/p/10650725.html
Copyright © 2020-2023  润新知