为何说HDFS是存储的王者呢?
让我们带着这个问题来了解HDFS的架构与原理,我一直认为学习大数据最好的方法就是看官网。 所以对初学者来说一定要多看官网,哪怕你看不懂英文,也要用软件翻译过来看。
首先来看下官方介绍:
Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商用硬件上运行。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的差异很大。HDFS具有高度容错能力,旨在部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。
看这个介绍已经能够大概了解了HDFS是个什么东西,简单来说就是使用多台低成本服务器来存储数据,并且保证高可用,从而降低了成本。
既然官网对HDFS的基本概念讲的很清楚了,那我就来讲讲官网之外的东西。我们知道大数据的诞生最早是源于google的三篇论文,第一篇论文Google File System的发表时间是在2003年。那么设想一下在没有分布式文件系统的情况下,我们需要存储文件的大小超过磁盘的大小该如何做?对应的解决方案就是RAID技术。
RAID技术是将多块普通磁盘组成一个阵列,主要是为了改善磁盘的存储容量、读写速度、磁盘的可用性以及容错性。
简单理解就是一个服务器里原本只有一个磁盘,现在加了N块磁盘。这样就可以解决文件大小超过磁盘的问题,而且可以将文件分成N份并发读写。这就是最早的RAID0,但是RAID0没有做备份所以只要有一块磁盘损坏就会破坏数据的完整性。
当然RAID技术也一直在改进,在保证了数据的完整性就要使用数据备份,那这样就会导致磁盘的使用率降低。鱼和熊掌不可兼得,如下图:
其实这就是”垂直伸缩”的扩容方式,通过升级cpu、内存、磁盘等将一台计算机变得更强大。但是在互联网时代这就行不通了,我们对计算能力以及大规模数据存储有更高的需求。所以就有了后来的HDFS分布式文件系统,它采用的是”水平伸缩”,通过添加更多的服务器来实现更高的计算能力以及大数据存储。
大数据的发展也有十几年了,各种技术也是层出不穷,计算框架、算法也是在不停的迭代更新。
大数据所有的一切都是围绕数据来展开,HDFS作为最早的大数据存储系统,各种新的计算框架和算法想要得到广泛的应用,就必须支持HDFS才能获取里面的数据。所以大数据越发展就越离不开HDFS。HDFS不是最好的大数据存储技术,但依然是最重要的大数据存储技术。
OK,前面的铺垫已经够多了,现在我们就来聊聊王者HDFS的架构原理,还是得从官网扒张最经典的图,如下:
从上面可以看出关键组件就是两个,一个是DataNode,一个是NameNode.
HDFS具有主从架构,HDFS集群由单个NameNode,一个管理文件系统命名空间的主服务器和管理客户端对文件的访问组成。此外,还有许多DataNode,通常是群集中每个节点一个,用于管理连接到它们运行的节点的存储。
HDFS公开文件系统命名空间,并允许用户数据存储在文件中。在内部,文件被分成一个或多个块,这些块存储在一组DataNode中。NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。它还确定了块到DataNode的映射。DataNode负责提供来自文件系统客户端的读写请求。
接下来,再看下HDFS是如何做到高可用的。
下面这张图是数据块多份复制存储的示意,图中对于文件 /users/sameerp/data/part-0,其复制备份数设置为 2,存储的 BlockID 分别为 1、3。
Block1 的两个备份存储在 DataNode0 和 DataNode2 两个服务器上
Block3 的两个备份存储 DataNode4 和 DataNode6 两个服务器上,上述任何一台服务器宕机后,每个数据块都至少还有一个备份存在,不会影响对文件 /users/sameerp/data/part-0 的访问。