分布式文件系统:HDFS 核心原理

目录

基础架构

HDFS Client

NameNode和DataNode

fsimage和edits

SecondaryNameNode

高可用架构

JournalNode

联邦机制

副本机制

机架感知

安全模式

平衡策略

读写原理

读原理

写原理

删除恢复机制


HDFS相关内容:

  1. HDFS超有用的知识点
  2. Hadoop3新特性之HDFS纠删码
  3. HDFS常用管理命令
  4. HDFS的副本数量配置
  5. HDFS查看namenode状态
  6. 统计HDFS目录下文件行数及文件大小

基础架构

HDFS(Hadoop Distributed File System)是 Apache Hadoop 项目的一个子项目,Hadoop 非常适于存储大型数据, 其就是使用 HDFS 作为存储系统,而HDFS 使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统。作为大数据生态最重要的组件之一,HDFS充当着大数据时代的数据管理者的角色,为各种分布式计算组件提供用于处理的数据存储的能力。

HDFS 基础架构由四个角色组成:HDFS Client、NameNode、DataNode 和 SecondaryNameNode

HDFS Client

HDFS客户端提交读写命令到HDFS,它负责:

  • 文件切分文件上传 HDFS的时候,Client 将文件切分成一个个Block(数据块),然后进行存储。
  • 与 NameNode 交互获取文件真实的位置信息。
  • 与 DataNode 交互读取或写入数据。
  • Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。

NameNode和DataNode

NameNode 是HDFS的Master节点,它负责:

  • 管理 HDFS 的名称空间;
  • 管理数据块(Block)映射信息;
  • 配置副本策略;
  • 处理客户端读写请求;
  • 周期性的接收心跳和块的状态信息报告;

 DataNode 是HDFS的Slave节点,它负责:

  • 存储实际的数据块;
  • 执行数据块的读/写操作; 
  • 周期性向NameNode汇报心跳信息;
  • 周期性向NameNode汇报数据块信息;
  • 周期性向NameNode汇报缓存数据块信息;

fsimage和edits

在Hadoop集群当中,NameNode的所有元数据信息都保存在fsimage 与 edits 文件中, 这两个文件记录了所有的数据的元数据信息,当集群重启时NameNode首先会从fsimage和edits文件中将元数据信息加载到内存中,因此NameNode机器对内存的要求相对会比DataNode高很多,元数据信息的保存目录配置在了 hdfs-site.xml 中的这两个参数:dfs.namenode.name.dir,dfs.namenode.edits.dir。

edits

  • 存放了客户端最近一段时间的操作日志;
  • 客户端对 HDFS 进行写文件时的操作会先被记录在 edits 文件中;
  • edits 修改时元数据也会更新;

fsimage

  • NameNode 中关于元数据的镜像,一般称为检查点,fsimage 存放了一份比较完整的元数据信息;
  • 因为 fsimage 是 NameNode 的完整的镜像, 如果每次都加载到内存生成树状拓扑结构,这是非常耗内存和CPU, 所以一般开始时对NameNode 的操作都放在 edits 中;
  • fsimage 内包含了 NameNode 管理下的所有 DataNode 文件和文件 block 以及 block所在的 DataNode 的元数据信息;
  • 随着 edits 内容增大,就需要在一定策略下和 fsimage 合并;

由于集群重启时NameNode会重新加载fsimage和edits文件,fsimage文件加载起来很快,但edits文件内记录的都是操作日志,因此edits文件不能无限增长,否则重放日志很慢,会影响到集群启动的速度,因此edits文件和fsimage会定期进行合并。

SecondaryNameNode

SecondaryNameNode不是NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务,而是作为一个辅助者分担NameNode的工作量。在后面的内容中介绍的HDFS的高可用中会介绍真正的NameNode热备机制。

  • 定期合并 fsimage和edits,并推送给NameNode,把 edits 控制在一个范围内。
  • 在紧急情况下,可辅助恢复 NameNode。

上面提到edits文件会根据一定策略和fsimage合并,主要由core-site.xml文件中的两个参数来管理:

<!-- 多久记录一次 HDFS 镜像, 默认 1小时 -->
<property>
  <name>fs.checkpoint.period</name>
  <value>3600</value>
</property>
<!-- 一次记录多大, 默认 64M -->
<property>
  <name>fs.checkpoint.size
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值