manzi

导航

HDFS基本架构及概念介绍

简单介绍

设计思想

分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析;

 在大数据系统中作用:

 为各类分布式运算框架(如:mapreducesparktez……)提供数据存储服务

 重点概念:文件切块,副本存放,元数据

HDFS概念和特性

首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色;

架构图


  • namenode存储文件系统的元数据信息  -->基于内存,不会和磁盘发生交换
  • datanode存储实际的数据块                       
  • datanode定时发送心跳还有块报告信息给namenode
  • 客户端通过与namenode通信获取文件的元数据信息,再通过获取到的元数据信息直接和datanode交互进行I/O操作

角色介绍

    Client:客户端
        文件切分,文件上传到HDFS时,Client负责将文件切分成一个个Block进行存储
        与Namenode交互,获取文件的元数据信息
        与Datanode交互,读取或写入数据
        提供一些命令来管理HDFS
        通过一些命令来访问HDFS

 metadata:元数据

  文件owership和permissions

  文件大小和时间

  (block列表,偏移量)

  block每个副本位置(datanode上报)

 


   block:文件线性切割块

  偏移量:offset(byte)

  分散存储在集群节点中

  单一文件block大小一致,文件与文件可以不一致

  可以设置副本数,不能超过节点数量,必须分散在不同节点上

  已上传文件副本数可以调整,大小不能改变

  一次写入多次读取,同时只允许一个用户写入,可以append追加数据


    NameNode:主节点
        管理 HDFS 的名称空间(NameSpace)
        管理数据块(Block)映射信息
        配置副本策略
        处理客户端读写请求

    DataNode:从节点
        本地磁盘存储block,文件形式

  同时存储block的元数据信息文件

  启动DN时向NN汇报block信息

  通过向namenode发送心跳保持联系(3s/次),如果namenode10分钟没有收到心跳,则认为其已经lost,并copy其上的block到其他DataNode

    Secondary NameNode:非 NameNode 热备。NameNode 挂掉时,它并不能马上替换 NameNode 并提供服务
        辅助 NameNode,分担其工作量
        定期合并 fsimage和fsedits,并推送给NameNode
        在紧急情况下,可辅助恢复 NameNode
 

(注:适合用来做数据分析,并不适合用来做网盘应用,因为,不便修改,延迟大,网络开销大,成本太高)

 

posted on 2019-04-29 17:35  manzi  阅读(2178)  评论(0编辑  收藏  举报