Hadoop Hdfs 存储模型&架构模型

书坊尚

关注

阅读 31

2024-11-26

Hadoop Hdfs 存储模型&架构模型_NameNode

存储模型

  • 按照字节存储,文件线性切割成块(Block):偏移量 offset (byte)
    一个文件切割成5块,一块3个字节,第二块的偏移量是4
  • Block分散存储在集群节点中,单一文件Block大小一致,文件的大小与文件的Block大小可以不一致
  • Block可以设置副本数,副本分散在不同的节点中(提高可靠性)副本不要超过节点数量
  • 已上传的文件的Block副本数可以调整,大小不变
  • 只支持一次写入多次读取,同一时刻只有一个写入者
  • 可以append追加数据

架构模型

  • 主从架构(Master/Slaves架构)
  • 由一个NameNode节点和多个DataNode节点组成
  • NameNode节点保存文件的元数据(单节点),DataNode保存文件Block数据(多节点)
  • 面向文件包含:文件数据Data,元数据Metadata:文件描述信息
  • NameNode负责存储和管理文件元数据,并维护一个层次型的文件目录树
  • DataNode负责存储文件Block,并提供Block的读写
  • DataNode与NameNode保持心跳,提交Block列表
  • HdfsClient与NameNode交互元数据信息
  • HdfsClient与DateNode交互文件Block数据

角色介绍

角色即进程

NameNode(NN)

一个NameNode负责管理多个DataNode

NameNode特性

1.基于内存存储,不会和磁盘发生交换
2.只存在内存中
3.持久化
内存掉电易失,通过快照(fsimage)+日志文件(edits)实现持久化,快照只能是定时记录,容易丢失部分数据,所以要结合日志文件
掉电后,上电时先把快照加载到内存,然后增量执行日志

NameNode主要功能

1.接受客户端的读写服务
2.收集DataNode汇报的Block列表信息

NameNode保存的metadata(元数据)信息
1.文件overship和permissions
2.文件大小、时间
3.Block列表:Block偏移量
Block每个副本的位置(由DateNode上报,NameNode不保存)

DataNode(DN)

  • 本地磁盘目录存储数据(Block),文件形式
    同时存储块的md5(校验文件完整性
  • 启动DN时会向NN汇报Block信息
  • 通过向NN发送心跳保持与其联系(3s一次),如果NN10分钟没有收到DN心跳,则认为其已经lost,并copy其上的Block到其他DN

Block副本放置策略

Hadoop Hdfs 存储模型&架构模型_NameNode_02


  • 第一个副本:放置在上传文件的DN。如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点
  • 第二个副本:放置在与第一个副本不同机架的节点上
  • 第三个副本:与第二个副本相同机架的节点
  • 更多副本:随机节点


Hadoop Hdfs 存储模型&架构模型_存储模型_03


Hdfs读写流程

写流程

Hadoop Hdfs 存储模型&架构模型_NameNode_04


  • 客户端和NameNode请求块的3个位置
  • NameNode根据副本存放规则返回3个位置
  • 客户端根据3个位置做pipeline,以更小的包做流式传输
    更小的包:把一个块切分成更小的块逐个传输
    流式:第一个小块传输到DN1后,第二个小块继续向DN1传输的同时,DN1上一个小块就可以同步进行副本传输到DN2,实现了时间上的并行传输
  • 第一个块传完后线性处理第二个块
  • 节点各自心跳汇报,时间也重叠,块的副本数对客户端透明,传输时间约等于一个文件的传输时间,不会因为副本数增加

读流程

Hadoop Hdfs 存储模型&架构模型_Hadoop_05


  • 客户端和NameNode获取文件信息
    1.距离优先:每个块有多个副本,每个副本和客户端的距离排序
    2.下载任意块:全部,部分,一个
  • 客户端根据NameNode返回信息从DateNode获取文件
  • hdfs很好的支持了本地化读取

安全模式


  • Hadoop搭建时会格式化,格式化操作会产生一个空的FsImage
  • NameNode启动的时候,首先将印象文件(FsImage)载入内存,并执行编辑日志(EditLog)中的各项操作
  • 一旦内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件和一个空的编辑日志
  • 此刻NameNode运行在安全模式,即ND的文件系统对于客户端是只读的
  • 此阶段ND收集个DN的报告,当数据块被确定安全后,再过若干时间,安全模式结束
  • 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置信息并不是ND位数的,而是以块列表形式存储在DN中


精彩评论(0)

0 0 举报