HDFS的原理与应用 | 青训营笔记

136 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第6天。

写在前面

在硕士期间的学习过程中学习过HDFS的架构和使用场景,但是结合业务实际的架构介绍还是第一次,很有理论联系实际的价值。在实习中也应用过课程中讲过的PySpark读写HDFS.

笔记内容

关键点

  • HDFS的设计与实现
  • HDFS的产品化体系建设
  • HDFS多场景应用
  • 分布式存储系统通用基本概念

一、HDFS基本介绍

Hadoop Distributed File System

  • 分布式文件系统
    • 大容量
    • 高可靠
    • 低成本
  • 分布式存储系统
    • 对象存储
      • Amazon S3
      • 阿里云OSS
      • MINIO
      • Ceph
    • 文件系统
      • HDFS
      • CubeFS
      • Ceph
      • Gluster
    • 块存储
      • Amazon EBS
      • CurveBS
      • Ceph
      • LONGHORN
    • 数据库
      • Cassandra
      • TiDB
      • ...
  • HDFS功能特性
    • 分布式
    • 容错
    • 高可用
    • 高吞吐
    • 可扩展
    • 廉价

二、架构原理

HDFS组件

  • Client/SDK
    • 写流程
    • 读流程
  • NameNode 源数据节点
    • 维护目录树
    • 维护文件和数据块关系
    • 维护文件块存放节点信息
    • 分配新文件存放节点
  • DataNode
    • 数据块存取
    • 心跳汇报
    • 副本复制

三、关键设计

基本概念

  • 容错能力
  • 一致性模型
  • 可扩展性
  • 节点体系
  • 数据防止
  • 单机存储引擎

NameNode目录树维护

  • fsimage
    • 文件系统目录树
    • 完整存放在内存
  • EditLog
    • 目录树的修改日志

NameNode数据放置

  • 数据块信息维护
  • 数据放置策略

DataNode

  • 数据块的硬盘存放
  • 启动扫盘

HDFS写异常处理

  • Lease Recovery
    • 情景
      • Client要修改一个文件时,需要通过namenode上锁,锁就是租约(Lease)
  • Pipeline Recovery
    • 情景
      • 文件写入过程中datanode侧异常挂掉了

Client读异常处理

  • 情景
    • 读取文件过程中DataNode侧异常挂掉了
  • 解决方法
    • 节点failover

旁路系统

  • Balancer
  • Mover

控制面建设

  • 可观测性设施
  • 运维体系建设

四、应用场景

  • PySpark读写HDFS
  • ETL概念
  • OLAP查询引擎
  • 通用存储场景