存储模型:字节

  • 文件依照字节切割成块(block)默认128MB,最小1M(可批改),每个 block 块有偏移量 offset,block块扩散存储在集群结点中。横向扩大
  • 同一文件的block块大小雷同,不同文件的block块大小能够不同。
  • block块能够设置正本,默认三个正本(可批改)。纵向扩大

    • 正本搁置策略:

      • 第一个正本:放在上传文件的DataNode
      • 第二个正本:放在与第一个正本不同的机架的节点上
      • 第三个正本:放在与第二个正本雷同机架的其余节点上
      • 更多正本:随机节点
  • 只反对一次写入屡次读取,不可批改块内容,
  • 能够append追加数据,同一时刻只有一个写入者

架构模型1.x:主从

NameNode(主结点):

  • 管理文件的元数据信息(MetaData):block块大小,offset偏移量等等
  • 接管客户端的读写服务
  • 基于内存存储(不会和磁盘产生替换)
  • 收级DataNode汇报的block列表

DataNode(从结点):

  • 负责保护治理放在本节点的block块的元数据信息(MD5:保障数据完整性)
  • 与NameNode放弃心跳,并向NameNode汇报block块信息

NameNode长久化:

  • fsimage(时点备份):metadata存储到磁盘文件的名字
  • EditsLog:记录对metedata的操作
  • fsimage和editsLog 在达到肯定条件(check point)会进行合并,造成一个新的fsimage

SecondaryNameNode(SNN)

  • 它不是NameNode的备份(然而能够做备份)它的次要工作是帮忙NN合并editsLog和fsimage
  • SNN合并流程

HDFS长处:

  • 高容错性

    • 数据主动保留多个正本
    • 正本失落后主动复原(从良好节点上拷贝)
  • 适宜批处理

    • 计算向数据挪动
    • 数据地位(offset)裸露给计算框架
  • 适宜大数据处理

    • GB、TB、PB、百万规模文件
  • 可构建在便宜机器上

HDFS写流程:

HDFS读流程:

Hadoop2.x

产生背景

  • Hadoop1.x中HDFS和MapReduce存在高可用、扩展性的问题
  • HDFS问题

    • NameNode单点故障。通过主备NameNode解决(HA)
    • NameNode压力过大,联邦Federation

架构模型2.x

  • Hadoop 2.x 由HDFS,MapReduce和Yarn三个分支组成

    • HDFS 2.x:只反对2个节点HA ,3.x反对一主多备