您的位置:首页 > 运维架构 > 网站架构

HDFS架构详解

2016-09-10 22:56 183 查看

分布式文件系统

物理层存储的分布式。

基于客户机/服务器模式:通常一个分布式文件系统提供多个供用户访问的服务器。

通常情况下,会具有备份和容错的功能。 hdfs默认备份3份,如果数据丢失,hdfs会根据其他备份进行恢复。

通常情况下都基于操作系统的本地文件系统:-ext3,ext4。

分布式文件系统的优点:

传统文件系统最大的问题就是容量和吞吐量的限制。

多用户多应用的并行读写是分布式文件系统的产生的根源(一块硬盘的读写性能比不上多个硬盘的读写性能)。

扩充存储空间的成本低廉。

可提供冗余备份。

可以为分布式计算提供基础 。

HDFS基本概念

HDFS是分布式文件系统。

HDFS是一个用java实现的,分布式的,可横向扩展的文件系统。

HDFS是Hadoop的核心组件。

基于*nix。

HDFS具有很高的容错性,提供了高吞吐量的数据访问。

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的前提和设计目标

硬件错误是常态:错误检测和快速,自动的恢复是HDFS最核心的架构目标。

存储超大的文件。

HDFS适合大量存储,总存储量可以达到的PB,EB级 。

HDFS适合大文件,单个文件一般在摆MB级以上。

文件数目适中

流式数据访问

HDFS适合用于批处理,不适合随机定位访问

HDFS的简单一致性模型

HDFS主要应用于对文件一次写入多次读出的访问模式,不能修改已写入的数据

程序采用“数据就近”原则分配节点执行

移动计算比移动数据的代价要低

运行在普通廉价的服务器上

HDFS的设计理念之一就是他能运行在普通的硬件之上,即使硬件出现故障,也可以通过容错策略来保证数据的高可用

HDFS的局限性

不适合低延迟的数据访问

高吞吐量可能要求以高延迟作为代价

Hbase可以弥补不足

无法高效存储大量小文件

文件数量的大小由NameNode来决定

不支持多用户写入以及任意修改文件

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文件内容的检验和检查

当文件创立时,会计算每个数据块的检验和

检验和会作为一个隐藏文件保存在命名空间下

客户端获取文件时可以检查数据块对应的检验和是否和隐藏文件中的相同,从而发现数据块是否损坏

如果正在读取
4000
的数据块损坏,则可以继续读取其他副本

6. 回收站

删除文件时,其实是放入回收站/trash

回收站里的文件可以快速回复

可以设置一个时间阀值,当回收站里的文件的存放时间超过这个阀值,就被彻底的删除,并且释放占用的数据块。

默认回收站时关闭的,可以通过core-site.xml中添加fs.trash.interval来打开并配置时间阀值,时间单位是分

7. 元数据保护

影像文件和事务日志是Namenode的核心数据。可以配置为拥有多个副本

副本会降低Namenode的处理速度,但增加安全性

Namenode依然是单点,如果发生故障要手工切换,Hadoop2.x的版本中可配置Namenode HA解决该问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息