Hadoop 概述(一)

Hadoop概述信息

hadoop 有三大组成部分,HDFS(分布式文件存储系统)、YARN(资源管理器)、MAPREDUCE(分布式计算框架) ,下边我们来简单介绍一下

HDFS 分布式文件存储系统

HDFS分布式文件系统,是由Google的GFS谷歌文件系统开源出来,其存储模型是有主从结构的,可以划分出来以下几点

  • NameNode(NN)
    基于内存存储,不会和磁盘发生交互,使用映射快照和日志文件进行持久化,保存元数据信息,
    以及保存文件名,文件属性,block块列表偏移量,位置信息和副本位置(block位置信息不会持久化,由 DN 心跳汇报)

  • DataNode(DN)
    以文件形式进行本地磁盘目录存储block块信息,同时会存储block块的元数据文件(MD5文件,用于校验文件完整性)
    启动 DN 时会向 NN 发送心跳信息,同时汇报block的位置信息,默认心跳时间是3秒一次,如果 NN 10分钟没有收到 DN 的心跳汇报,
    则认为其已经丢失,由于副本数会小于系统配置副本数,NN 会进行copy该block块信息到其他 DN 上

    1. block,是将文件线性切割成块,也是偏移量 offset,大小默认设置为128M,副本数默认为3个,分散存储在集群节点中,
      已上传的文件block副本数可以调整,大小不可以调整,只支持一次写入多次读取,同一时刻只有一个写入者

    2. 副本的放置位置的逻辑
      第一个副本:放置在上传文件的 DN,如果是集群外提交,则随机挑选一台磁盘不满,CPU不忙的
      第二个副本:放置在与同一个副本不同的机架上的某个 DN
      第三个副本:放置在与第二个副本同一个机架,不同的 DN 上
      更多个脚本:出去上边3个,其他随机放置在不同的 DN 上

  • SecondaryNameNode (2NN)
    它不是 NN 的备份,主要工作是帮助 NN 合并 fsimage 和 edits log信息,减少 NN 启动时间

    1. 2NN 执行合并文件的时机:根据配置的时间间隔 dfs.namenode.checkpoint.perid 默认是3600秒,
      或者根据配置文件设置一定数量的文件系统事物之后 dfs.namenode.checkpoint.txns,默认是 1000000次事物
      如果同时设置了这两个属性,则达到的哪一个阈值将触发一个检查点

    2. 2NN 合并的流程
      NN 在触发checkpoint时间节点,会将自己的fsimage 和 edits log 日志信息同步到 2NN。同时创建一个新的edits log
      2NN 会加载fsimage 并执行log日志里的命令,生成一个最新的fsimage.ckpt文件,此时fsimage.ckpt保存的快照信息就是从hadoop启动到当前checkpoint时间节点的信息。
      再次推送fsimage.ckpt 到 NN 转换成fsimage文件,此时会有一个checkpoint时间节点的快照文件,和checkpoint时间节点后的edits log日志文件
      当下次再次触发checkpoint时,2NN 只需要加载edits log日志文件就可以合并下一个最新的快照文件

  • 安全模式

    1. NN 启动的时候,首先将映射文件fsimage载入内存,并执行编辑日志edits log文件里的操作

    2. 一旦在内存中成功建立文件系统元数据的映射,则会创建一个新的fsimage 文件和一个空的edits log文件
      此刻 NN 是安全模式,即 NN 的文件系统对于客户端来说只读

    3. 此时,NN 接收到各个 DN 的心跳和汇报信息,会收集到数据块的位置等信息,当数据块达到最小副本数时,
      会被认为是安全的,在一定比例的数据块被确认为安全后,再过若干时间,安全模式结束

    4. 当检测到副本数不足的数据块,块会被复制到其他 DN 中,直到达到最小副本数,系统中数据块的位置并不是由 NN 维护,而是以块列表形式存储在 DN 中

posted @ 2021-03-14 23:28  Tenic  阅读(60)  评论(0编辑  收藏  举报