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

127 阅读2分钟

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

关于 HDFS

image-20220824193328597

HDFS 是 Hadoop Distributed File System 的简称,是 Hadoop 体系中数据存储管理的基础

作为一种分布式文件系统,HDFS 拥有以下特性:

  • 分布式:受 GFS 启发,用 Java 实现的开源系统,没有实现完整的 POSIX 文件系统语义
  • 容错:自动处理、规避多种错误场景,例如常见的网络错误、系统宕机等
  • 高可用:一主多备模式实现元数据高可用,数据多副本实现用户数据的高可用
  • 高吞吐:Client 直接从 DataNode 读取用户数据,服务端支持海量 Client 并发读写
  • 可扩展:支持联邦集群模式,DataNode 数量可达 10w 级别
  • 廉价:只需要通用硬件,不需要定制高端的昂贵硬件设备

架构原理

HDFS 组件

image-20220824194956288

元数据节点 NameNode

image-20220824195352519

  • 接收客户端读写,存元数据信息
  • 元数据信息包括文件谁所有,权限,用户对文件的操作信息(edit logs),文件被分成几块(Block ID),块存在哪些DataNode
  • 一个集群中有且只有一台 NameNode 处于 active状 态

数据节点 DataNode

image-20220824200309331

  • 分块存储数据,启动时向 NameNode 报告
  • DataNode 之间互为备份
  • DataNode 和 NameNode 按照固定时间的心跳保持连续

Client 写流程

image-20220824194718421

Client 读流程

image-20220824195008673

关键设计

  1. NameNode 目录树维护
  2. NameNode 数据放置
  3. DataNode
    1. 数据块的硬盘存放
    2. 启动扫盘
  4. HDFS 写异常处理
    1. Lease Recovery
    2. Pipeline Recovery
  5. Client 读异常处理
  6. 旁路系统
  7. 控制面建设

应用场景

  • 大数据技术中的应用

    • HDFS在大数据技术体系中的角色
    • 演示:PySpark读取分析HDFS上的文件
      • 数据如何产生
      • 数据如何读取
      • 数据如何保存
    • ETL:数据如何产生、传输
    • OLAP:如何高效地读取分析数据
  • 存储底座

    • HBase
    • 机器学习
    • 通用场景