HDFS架构详解

分布式文件系统


  1. 物理层存储的分布式。
  2. 基于客户机/服务器模式:通常一个分布式文件系统提供多个供用户访问的服务器。
  3. 通常情况下,会具有备份和容错的功能。 hdfs默认备份3份,如果数据丢失,hdfs会根据其他备份进行恢复。
  4. 通常情况下都基于操作系统的本地文件系统:-ext3,ext4。

分布式文件系统的优点:


  1. 传统文件系统最大的问题就是容量和吞吐量的限制。
  2. 多用户多应用的并行读写是分布式文件系统的产生的根源(一块硬盘的读写性能比不上多个硬盘的读写性能)。
  3. 扩充存储空间的成本低廉。
  4. 可提供冗余备份。
  5. 可以为分布式计算提供基础 。

HDFS基本概念


  1. HDFS是分布式文件系统。
  2. HDFS是一个用java实现的,分布式的,可横向扩展的文件系统。
  3. HDFS是Hadoop的核心组件。
  4. 基于*nix。
  5. HDFS具有很高的容错性,提供了高吞吐量的数据访问。
  6. HDFS适用于一次写入多次查询的情况,不支持并发写情况,小文件不合适

HDFS的基本概念————————块

  • 传统的块存储介质中,快是读写的最小数据单位(扇区)
  • HDFS使用块的概念,Hadoop1.x版本默认大小为64M,2.x的版本为128M 可自行在hdfs-site中进行配置:1.x的版本修改dfs.block.size,2.x版本修改:dfs.blocksize,默认单位为比特,兆与比特计算方法:128*1024*1024,每一个块有一个自己的全局ID
  • HDFS将一个文件分为一个或者数个块来存储
    • 每个块是独立的存储单位
    • 以块为单位在集群服务器上分配存储

HDFS的基本概念————————块带来的好处

  • 一个文件的大小可以超过网络中任意一个磁盘的容量
  • 简化了存储子系统的设计,简化了存储管理,消除了对元数据的顾虑
  • 块适用于数据备份,提供了容错能力和可用性

HDFS基本概念—————————块的冗余备份

HDFS的前提和设计目标


  1. 硬件错误是常态:错误检测和快速,自动的恢复是HDFS最核心的架构目标。
  2. 存储超大的文件。
    • HDFS适合大量存储,总存储量可以达到的PB,EB级 。
    • HDFS适合大文件,单个文件一般在摆MB级以上。
    • 文件数目适中
  3. 流式数据访问
    • HDFS适合用于批处理,不适合随机定位访问
  4. HDFS的简单一致性模型
    • HDFS主要应用于对文件一次写入多次读出的访问模式,不能修改已写入的数据
  5. 程序采用“数据就近”原则分配节点执行
    • 移动计算比移动数据的代价要低
  6. 运行在普通廉价的服务器上
    • HDFS的设计理念之一就是他能运行在普通的硬件之上,即使硬件出现故障,也可以通过容错策略来保证数据的高可用

HDFS的局限性


  1. 不适合低延迟的数据访问
    • 高吞吐量可能要求以高延迟作为代价
    • Hbase可以弥补不足
  2. 无法高效存储大量小文件
    • 文件数量的大小由NameNode来决定
  3. 不支持多用户写入以及任意修改文件

HDFS体系结构


这里写图片描述

1. HDFS的元数据包括


  • 文件系统目录树信息
  • 文件名,目录名
  • 文件和目录的大小,创建以及最后一次访问时间
  • 文件和目录的权限
  • 文件和块的对应关系
  • 文件由哪些块组成

2. NameNode的职责讲解


  • 管理文件系统的命名空间
  • 记录每个数据块在各个Datanode上的位置和副本信息
  • 协调客户端对文件的访问
  • 记录命名空间内的改动或空间本身属性的改动
  • Namenode使用事务日志记录HDFS元数据的变化。使用影像文件系统的命名空间,包括文件映射,文件属性等。
  • 通过检查点更新影像文件,Secondary Namenode辅助完成处理

3. DataNode职责详解


  • 负责所在物理节点的存储管理
  • 一次写入,多次读取(不可修改)
  • 文件由数据块组成,典型的块大小64MB和128MB
  • 数据块尽量散步到各个节点

HDFS读写文件流程


1. HDFS读文件的流程

这里写图片描述

2. HDFS写文件的流程

这里写图片描述

HDFS可靠性


1. 冗余副本策略

  • 可以在hdfs-site.xml中设置复制因子指定副本的数量
  • 所有数据块都具有副本
  • Datanode启动时,便利本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表汇报给namenode

2. 机架策略

  • 集群一般放在不同的机架上,机架间宽带要比机架内宽带更小
  • 默认一个机架存储两份数据,另一个机架存储一份数据,安全并且提高利用率

3. 心跳机制

  • Namenode周期性从datanode接收心跳信号和块报告
  • Namenode根据块报告验证元数据
  • 没有按时发送心跳的datanode会被标记为宕机,不会在收到任何的I/O请求
  • 如果datanode失效造成副本数量下降,并且低于预先设置的阀值, namenode会检测出这些数据阀值,并在合适的时机进行重新复制
  • 重新复制的原因还包括数据副本损坏,磁盘错误,复制因子被增大等。

4. 安全模式

  • Namenode启动时会先经过一个安全模式阶段
  • 安全模式阶段不会产生数据写
  • 在此阶段Namenode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的。
  • 在一定比例的数据块被确认安全后,再过若干时间,安全模式退出
  • 当检测到副本数不足的数据块时,该块会被复制达到最小的副本数

5. 检验和

  • HDFS客户端软件实现了对HDFS文件内容的检验和检查
  • 当文件创立时,会计算每个数据块的检验和
  • 检验和会作为一个隐藏文件保存在命名空间下
  • 客户端获取文件时可以检查数据块对应的检验和是否和隐藏文件中的相同,从而发现数据块是否损坏
  • 如果正在读取的数据块损坏,则可以继续读取其他副本

6. 回收站

  • 删除文件时,其实是放入回收站/trash
  • 回收站里的文件可以快速回复
  • 可以设置一个时间阀值,当回收站里的文件的存放时间超过这个阀值,就被彻底的删除,并且释放占用的数据块。
  • 默认回收站时关闭的,可以通过core-site.xml中添加fs.trash.interval来打开并配置时间阀值,时间单位是分

7. 元数据保护

  • 影像文件和事务日志是Namenode的核心数据。可以配置为拥有多个副本
  • 副本会降低Namenode的处理速度,但增加安全性
  • Namenode依然是单点,如果发生故障要手工切换,Hadoop2.x的版本中可配置Namenode HA解决该问题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NobiGo

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值