从 RAID 到 Hadoop Hdfs 『大数据存储的进化史』

咱们都知道如今大数据存储用的基本都是 Hadoop Hdfs ,但在 Hadoop 诞生以前,咱们都是如何存储大量数据的呢?此次咱们不聊技术架构什么的,而是从技术演化的角度来看看 Hadoop Hdfs。node

咱们先来思考两个问题。服务器

  • 在 Hdfs 出现之前,计算机是经过什么手段来存储“大数据” 的呢?
  • 为何会有 Hadoop Hdfs 出现呢?

在 Hadoop Hdfs 出现之前,计算机是经过什么手段来存储“大数据”

要知道,存储大量数据有三个最重要的指标,那就是速度,容量,容错性。速度和容量的重要性毋庸置疑,若是容量不够大,或者读取的速度不够快,那么海量数据存储也就无从谈起了。而磁盘又是计算机中很容易损坏的零件,当磁盘损坏的时候怎么办?听任数据的丢失吗,那可不行,这就有了容错性的需求。架构

在没有分布式存储的时代,单个磁盘容量不够怎么办?加磁盘呗。磁盘容易坏怎么办,同时用其余磁盘备份呗。就这样,独立磁盘冗余阵列( Redundant Array of Independent Disks ),简称 RAID,诞生了。
并发

在 2000 年之前,磁盘仍是很珍贵的资源,不像如今,磁盘是 PC 机中最廉价的部件。一开始 RAID 技术是为了将多个廉价的容量较小的磁盘组合起来充当一个大磁盘以节约成本,但后来人们发现这项技术也能够用在单台机器磁盘扩容上了,因而 RAID 技术开始被普遍使用。框架

RAID 技术将多个磁盘组合成一个逻辑扇区,对计算机而言,它会将 RAID 看成一个磁盘来处理。使用 RAID 的好处有:加强数据集成度,加强容错功能,增长处理量或容量。分布式

另外 RAID 也有分为多个档次,标准的分法,分别是 RAID0 , RAID1 , RAID2 ,RAID3 ,RAID4 ,RAID5 , RAID6 ,每一个档次都有对应的优缺点。这里就不详细介绍,这些 RAID 等级的不一样主要是对 上述说到的三个数据存储要素(速度,容量,容错性)的不一样取舍,各有各的应用场景。咱们从上述的三个指标来看 RAID 技术。oop

  • 速度: RAID经过在多个磁盘上同时存储和读取数据来大幅提升存储系统的数据吞吐量。在RAID中,可让不少磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,因此使用RAID能够达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。
  • 容量: 能够将多个磁盘链接起来,对比之前的单个磁盘存储,RAID 将存储的量级拔高了一个台阶。但依旧有其局限性,由于 RAID 始终是放在单台机器上,机器的磁盘卡槽不可能无限增长,磁盘也不可能一直增大。
  • 容错性: 不一样等级的 RAID 使用不一样的数据冗余策略,保证数据的容错性。好比最简单的 RAID1 就是数据在写入磁盘时,将一份数据同时写入两块磁盘,这样任何一块磁盘损坏都不会致使数据丢失,而插入一块新磁盘就能够经过复制数据的方式自动修复,具备极高的可靠性。

为何会有 Hadoop Hdfs 出现

最直接是缘由是 Google 三篇大数据论文的发表,这直接致使了 Hadoop 的问世。大数据

但更深层的缘由其实仍是由于传统的但节点磁盘容量达到了极限,即使是用上述的 RAID 技术,但单个台服务器的容量始终有一个边界值。并且随着互联网的普及,在 2000 年后,数据的积累呈指数式增加,这时候单台服务器显然已经放不下这海量的数据了。可是就像 RAID 的改革思想同样,既然单台服务器不够,那咱们就加服务器呗。设计

最先是 Google ,他们在本身的系统上实现了 Google File System(GFS) 这么一个分布式存储系统,并在 03 年的时候将它的实现论文发表了出来。然后 Doug Cutting 和 Mike Cafarella 在这三篇论文的基础上开发出了 Hadoop。3d

但要将多台服务器联合在一块儿进行分布式存储,显然不是那么容易。Hadoop1.0 的时候,Hdfs 仍是有一些隐患的。举个例子,用分布式进行数据存储,那就须要一个来记录元数据的服务器,也就是记录数据存储位置的服务器。Hadoop1.0 时候的 Hdfs 是用一个 namenode 管理元数据的,但显然,只有一个 namenode 来存储元数据有极大的风险,那就是 namenode 的可靠性没法保证,一旦这个 namenode 挂掉,整个集群就完蛋了。

好在这些问题及时获得修复,Hadoop2.0 横空出世,解决了大部分的问,好比上面说到的 NameNode 单点故障问题,解决方式就是多引入一台 NameNode 作同步备份,一个 NameNode 出问题时另外一个跳出来扛。升级事后,Hadoop Hdfs 这才算是坐稳了大数据存储王者的宝座。

在这里咱们就先不说 Hadoop Hdfs 的架构如何,依旧是从上面说到的大数据存储的三个指标速度,容量,容错性这几个方面来看 Hadoop Hdfs。

  • 速度: 速度方面的优点源于 Hdfs 合理的设计理念。它默认用到 Hdfs 处理的是大的数据(TB,PB 级的数据),而且摒弃了传统文件系统中的 Update 操做,只有 Append 操做。在这个基础上,Hdfs 将一个文件分割成若干个块(Block),每一个块分布在不一样的机器中。。和 RAID 利用多个磁盘并发 IO 提升速度同样,每次操做一个文件的时候,其实是多个机器在并发读取,这样无疑是进一步提升读取速度。
  • 容量: 容量这个问题自没必要说,理论上是能够无限制得扩容。但实际上因为它的元数据存储在一台 namenode 中,因此它的大小仍是会收到元数据存储的这个限制。不过在 Hadoop2.0 后,在机器条件容许的状况下,一个 Hdfs 支撑起 PB 级别的存储仍是绰绰有余的。
  • 容错性: 在容错性这个方面,从之前到如今基本都是经过数据冗余来实现的。只不过数据冗余的一些策略会根据不一样的应用场景而作出一些改变。因为 Hadoop 自己就是假设部署在多台廉价机器上,因此它会倾向于将存储数据的节点看成不可靠的节点。出于这个因素,Hdfs 的默认冗余备份数是 3份 ,就是说当你向 Hdfs 写入一份数据的时候,同时会在其余三台机器上也写入相同的内容。

咱们能够发现,其实 Hadoop Hdfs 和 RAID 在思想上是有一些类似之处的。都是经过水平拓展,好比 RAID 水平拓展磁盘,Hadoop Hdfs 则是水平拓展机器。

铁打的营盘流水的兵。数据就是那些兵,大数据计算框架,好比 Spark,Hive 是将军。而营盘就是 Hadoop Hdfs 了。兵进进出出,将军换了一个又一个,惟独营盘不会变,Hadoop Hdfs 无疑是大数据体系中最基础也是最重要的那一环。

这里给出一个有意思的问题: 当下一次互联网革命到来,数据又呈指数增加的时候,数据存储的模式会怎样演化呢?会是简单的增长集群吗,比方说让多个 hdfs 集群相互连通?欢迎在评论中写下你的思考。

相关文章
相关标签/搜索