HDFS | 青训营笔记

246 阅读2分钟

HDFS

基本情况

HDFS 是 Hadoop 技术体系中存储层的分布式文件系统,我们可能平常在Windows和Linux中见的和应用最多的应该是单机文件系统(FAT32 NTFS BTRFS EXT2/3/4 etc.),HDFS分布式文件系统的具有的一些特点

  • 大容量 - 更多的机器更多的存储介质
  • 高可靠 - 多个副本的容错能力
  • 低成本 - 不需要高级的硬件来进行扩容

分布式文件系统时分布式存储系统的一个存储分支,一般分布式存储系统的归类有

  • 对象存储(阿里云OSS AmazonS3)
  • 文件系统(HDFS CubeFS)
  • 块存储(AmzonEBS CurveBS)
  • 数据库(cassandra)

HDFS 的功能特性

  • 分布式 - 受GFS启发,使用java开发的开源的系统,但没有完整实现完整的POSIX文件系统语义
  • 容错 - 自动处理,规避多种错误的场景(网络错误 机器宕机)
  • 高可用 - 主备模式实现元数据的高可用,数据多副本进行存储
  • 高吞吐 - Client 直接从 DataNode进行数据的读取,支持并发的读写
  • 高扩展 - 联邦选举式集群模式,DataNode 数量可达 10w 级别
  • 廉价 - 只需要通用的硬件,不需要高昂的硬件设备

架构原理

核心组件

HDFS的三大件

20230218224033.png

DataNode 实际数据的存储地址,NameNode存储数据的元数据

Client 写入数据的流程

20230218225532.png

Client 读取数据的流程

20230218230810.png

NameNode(元数据节点)

  1. 维护目录树(维护目录树增删改查操作,保证数据的的持久化)
  2. 维护文件和数据块的关系(文件切分多个块,文件以数据块为单位进行多副本的存放)
  3. 维护文件块存放节点信息(通过心跳接收DataNode的汇报信息,维护集群节点的拓扑结构和文件所有副本的DataNode类表)
  4. 分配新文件存放节点(Client 创建文件的时候,进行DateNode 的分配)

DataNode(数据节点)

  • 数据块的存储(实现数据块在硬盘上的快速存取)
  • 心跳汇报(将本机的数据块列表发送到NameNode,汇报运行的状态)
  • 副本复制(数据写入时 Pipeline IO ,机器发生故障副本的还原)