分布式文件系统——HDFS

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mapbar_front/article/details/82058556

HDFS是什么

HDFS最早源于谷歌的分布式文件系统GFS,在2003年的时候,谷歌发表了论文——“The Google File System”,介绍了GFS产生的背景、架构、实现等。

谷歌虽然发布了这样的论文,但是没有把GFS进行开源,而HDFS就是针对谷歌的GFS的开源实现。

为什么要用HDFS

期初的时候,当数据量变大的时候,人们想到的方式,是买一个更贵的更大的服务器,来支撑我们现有的业务。而当今时代,数据量可能远远超出单个服务器负载信息的额度,而且存储方式也不仅仅是之前的类SQL的数据,渐渐演变成了一个个的文件、流式数据的存储。

我们不可能买一个容量无限大的服务器,这时候分布式的数据存储,就提上了日程。分布式文件系统的理念不是纵向扩容,而是横向发展的。当一台机器的容量不足以存放数据时,我再增加一台机器,来存放我们的数据。

分布式文件系统需要解决的问题

第一、如何保证,当我的一台机器出现问题,我的数据不丢失?这很有可能要保证我们的分布式系统具有良好的容错性。

一般是通过对数据进行备份的方案来实现的,当一台服务器挂掉之后,我还能在其他的服务器上保证数据的完整性。

第二、分布式文件系统文件一般很大,比如说GB级别,这在数据读取、块大小等方面要做合适的设计。

通过我们的设计师,分块的时候分成128M。

第三、解决文件写入、多次读取的问题。

分布式系统的设计(文件级别、块级别)

一般我们采用的是分块的方式,进行分布式系统的设计。但是探讨文件级别的设计,有助于我们对分布式文件系统有充分的理解。

1、文件级别的分布式设计。
一般的分布式设计,会有Master主机,叫做NameNode,用于数据存储信息的记录。还有用于数据存储的各个小单元,叫DataNode。

NameNode的主机会对各个DataNode的数据进行统一管理和识别。

为了解决数据存储安全性的问题,我们会把文件存放到不同的dataNode中。

但是这种文件式的分布式设计,也存在一些问题:

当某个文件被多个节点读取时,网络带宽会成为性能的瓶颈。由于文件的大小不一致,也难以保证每个datanode节点的负载均衡。

2、块级别的分布式系统

主要是针对文件级别的分布式设计,我们不再把文件当做存储的单位,我们首先会把文件进行切片处理,一般规格是128Mb。然后把一个个的块,当做基本单位存储到不同的节点上。

每一个datanode,会把自己的基本信息,和Master做心跳汇报,汇报内容有自身节点的健康状况、以及负载均衡等。

HDFS基本架构

HDFS采用的是主从架构,主节点是NameNode,只有一个,管理元信息和所有从节点,从节点被称为“DataNode”,通常存在多个,是实际存储的数据块。HDFS的各个功能组件如下:

1、NameNode:HDFS集群管理者,管理文件系统元信息和所有DataNode。
元信息:NameNode维护着整个文件系统的目录树。
管理DataNode:使用心跳的方式,获取DataNode的基本信息。
主备切换:通常NameNode的基本信息,也会进行备用,当我们的NameNode有问题的情况下,直接切换到另一台NameNode上,保证信息的不间断提供。
状态同步:Active NameNode和Standby NameNode数据进行同步。

2、DataNode:数据存储、心跳信息维护。
3、Client:数据分块、与NameNode和DataNode的通信,进行数据流的获取等等。

猜你喜欢

转载自blog.csdn.net/mapbar_front/article/details/82058556