2.HDFS 架构

目录

概述

官方文档快递

环境:hadoop 版本 3.3.6
相关文章速递

架构

HDFS

HDFS 架构总结如下:

  • a master/slave architecture 一主多从架构
  • a file is split into one or more blocks and these blocks are stored in a set of DataNodes 一个文件会被拆分成1或者多个 block (块),然后存储在 DN 上
  • NameNode:NN
    • file system namespace 文件系统命名空间
    • 执行文件系统的命名空间操作:打开、关闭、重命名文件或者文件目录
    • 记录数据 block (块) 对应的 DN
  • DataNode:DN

HDFS 组件职责

  • NN
    • 维护和管理文件系统的命名空间
    • 副本策略
    • Block 的映射信息
    • 处理客户端读写请求
  • DN
    • 存储 Block
    • 真正执行数据块的读写操作
  • Client
    • 与 NN 交互,获取到文件的元数据信息
    • 与 DN 交互,执行数据块的读写操作
    • 管理 HDFS
  • SNN:Secondary NameNode
    • 不是 NN 的热备
    • 分担一些 NN 工作量:定期合并 FsImage Edits 完成后推送到 NN
  • Block
    • hadoop3.x 默认大小 128M

副本

For the common case, when the replication factor is three, HDFS's placement policy is to put one replica on the local machine if the writer is on a datanode, otherwise on a random datanode in the same rack as that of the writer, another replica on a node in a different (remote) rack, and the last on a different node in the same remote rack.

上述两个机架,一个机架三台机器。

通常情况下,副本因子为3

  • 第一个副本:client 所处的节点上,如果 client 在集群外,在相同机架上(rack)随机选择一个
  • 第二个副本:在另外一个机架上随机选择一个节点
  • 第三个副本:在第二个副本所在机架上随机选择一个节点(与二个副本不在一个节点)

HDFS数据写入流程

先来张图,如下

  • 客户端发送请求 put 一个文件,由 NN 根据元数据判断文件是否存在,是否具备权限,根据副本摆放策略,返回响应数据给 client 端
  • client 根据响应数据,将第一个 block 写入 DN1 , DN1、DN2、DN3 之间会同步数据,而不是由 client 执行

NN 工作原理

老规矩上个图易理解

重点总结如下:

  • NN 元数据采取的是 内存+磁盘的方式管理
    • FsImage
    • Edits 每次操作都以追加的方式写入日志
    • 完整的元数据信息 = FsImage + Edits
  • 相关配置
    • dfs.namenode.checkpoint.txns
    • dfs.namenode.checkpoint.period

DN 工作原理

老规矩上图

  • 向 NN 发起注册
  • Block 信息汇报
    • dfs.blockreport.intervalMsec
  • DN 发起心跳
    • dfs.heartbeat.interval (默认 3秒)
    • dfs.namenode.heartbeat.recheck-interval (再次 recheck 默认 5分钟)
  • 超时掉线 10分钟30秒 检测不到心跳,直接掉线
    • timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval

结束

至此,HDFS 架构 就结束了,如有疑问,欢迎评论区留言。

相关推荐
葫芦的运维日志1 小时前
从手动部署到GitOps只需四步
架构
sumuve1 小时前
从100行到1行:我是如何重构IoT设备实时数据通信的?
架构·响应式设计
koddnty2 小时前
c++协程控制流深入剖析
后端·架构
Mintopia2 小时前
Vite 与 Uni-App X 的协作原理:从前端开发到多端运行的桥梁
架构
louiX18 小时前
深入理解 Android BLE GATT 回调机制:从“回调地狱”到高可靠 OTA 架构
架构
aircrushin19 小时前
轻量化大模型架构演进
人工智能·架构
天蓝色的鱼鱼19 小时前
你的项目真的需要SSR吗?还是只是你的简历需要?
前端·架构
文心快码BaiduComate20 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
JavaTalks1 天前
高并发保护实战:限流、熔断、降级如何配合落地
后端·架构·设计
兆子龙1 天前
别再用 useState / data 管 Tabs 的 activeKey 了:和 URL 绑定才香
前端·架构