Reader's Club

Home Category

牛津通识读本:大数据 [5]

By Root 1109 0
沃尔德罗普对栅极间的距离尤感兴趣,目前顶级微处理器栅极的间隙是14纳米。他表示由于集成电路的进一步密集化,芯片过热以及如何有效散热等问题正制约着摩尔定律所预测的指数级增长。这也使我们注意到摩尔所言的迅速接近的基本限度。

纳米的尺寸是10—9米或百万分之一毫米。拿其他物体来做个比较,人的头发直径约为7.5万纳米,原子的直径在0.1纳米到0.5纳米之间。供职于英特尔的保罗·加尔吉尼宣称,栅极间隙的极限为2纳米或3纳米。极限到来之日并不遥远——也许21世纪20年代就能见证。沃尔德罗普推断:“在那样小的间隙之下,电子的行为将受控于量子不确定性,结果是晶体管变得无可救药般不可靠。”正如我们将在第七章中看到的那样,量子计算机(一种仍处于起步阶段的技术)有望最终能提供这一问题的解决方案。

摩尔定律现在也适用于数据的增长率,因为数据的增长似乎每两年大约翻一番。随着存储容量的扩大和数据处理能力的增强,数据也会增加。我们都是大数据的受益者。正是由于摩尔定律预测的成指数级增长的大数据,奈飞、智能手机、物联网(对连接到互联网的大量电子传感器所组成的万物互联的简便说法),以及云计算(将服务器连在一起的全球网络)等这一切才成为可能。所有这些新生事物生成的数据必须得到存储,下面我们将对此展开讨论。

结构化数据存储

每当我们使用个人计算机、笔记本电脑或智能手机的时候,28都是在访问存储在数据库中的数据。结构化数据(例如银行对账单和电子地址簿)存储在关系数据库中。为了管理这些结构化数据,需要使用关系数据库管理系统(RDBMS)来创建、维护、访问和控制数据。第一步是设计数据库模式,即数据库的结构。为了实现这一点,我们需要确定数据字段并将它们排列在表中,然后我们再确定数据表之间的关系。一旦完成了上述工作并构建数据库之后,我们就可以填充数据到数据库中,并使用结构化查询语言(SQL)对其进行检索。

显然,数据表的设计必须要认真对待,否则后续的改动会大费周章。但是,关系模型的价值不应被低估。对于很多结构化数据应用程序来说,它快速且可靠。关系数据库设计的一个重要考量被称为规范化,它包括最大化地降低数据的重复,从而降低存储的压力。数据的访问会因此变得快捷,但即便如此,随着数据量的增加,这种传统数据库性能的下降也不可改变。

问题主要关涉可扩展性。由于关系数据库基本上只能在一台服务器上运行,所以随着数据库容量的逐渐增大,它就会变得缓慢且不可靠。维持可扩展性的唯一方法是增加计算能力,但计算力是有限度的。这被称为垂直扩展性。因此,虽然有关系数据库管理系统存储和管理结构化数据,但是当数据过大时(如Tb或Pb及以上级),关系数据库管理系统就不再能有效工作,即使对于结构化数据来说也是如此。

关系数据库的重要特性和持续使用它们的理由,在于它们符合以下属性组,即原子性、一致性、独立性和持久性(简称ACID)。原子性确保不完整的处理(操作)无法更新数据库;一致性排除无效数据;独立性保证一个处理不会干扰另一个处29理;持久性意味着数据库必须在执行下一个处理之前更新。所有这些都是理想的属性,但存储和访问大数据需要采用不同的方法,因为大数据基本都是非结构化的。

非结构化数据存储

对于非结构化数据来说,由于多种原因,关系数据库管理系统不再适用。关系数据库模型一旦构建完毕,就很难对其进行更改。这是甚为棘手的难题。此外,非结构化数据无法被方便地组织成行和列。正如我们所看到的,大数据通常是高速且实时生成的,需要得到实时处理。因此,尽管关系数据库管理系统使用范围广泛,而且也确实为我们提供了很好的服务,但鉴于目前数据的爆炸式增长,需要深入研究新的存储和管理技术。

为了存储海量数据集,数据被分配到不同的服务器上。随着所涉及的服务器数量的增加,出现故障的概率也随之增大。因此,将相同数据的多个副本存储在不同的服务器上就变得尤为重要。实际上,由于现在处理的数据量巨大,系统故障已经难以避免。数据存储已经内置了新的方法,以便应对这一难题。那么如何满足速度和可靠性(这两个相互矛盾)的双重需求呢?

海杜普分布式文件系统

分布式文件系统(DFS)为分布在多个节点的众多计算机上的大数据提供了高效且可靠的存储。谷歌公司于2003年10月发表了一篇研究论文,该文是针对谷歌文件系统的推出而专门撰写的。在该论文的启发下,当时在雅虎工作的道格·卡廷和他的同事——华盛顿大学的研究生迈克·卡弗雷拉,开始了30海杜普分布式文件系统的开发。海杜普是最受欢迎的分布式文件系统之一,它是一个名为海杜普生态系统的更大型开源软件项目的一部分。海杜普的命名取之于卡廷儿子的黄颜色大象软玩具,以流行的编程语言Java编写。在你使用脸书、推特或易贝(eBay)的时候,海杜普就会一直在后台运行。它不仅存储半结构化和非结构化数据,并且提供数据分析平台。

当我们使用海杜普分布式文件系统时,数据分布在许多节点上——通常是数万个节点,遍布于世界各地的数据中心。图4显示了单个海杜普分布式文件系统集群的基本结构,该集群由一个主管理节点和许多从属的数据节点组成。

图4 海杜普分布式文件系统集群简略图

主管理节点处理来自客户端计算机的所有请求。它分配存储空间,并跟踪存储的有效性和数据的位置。它还管理基本文件操作(例如打开和关闭文件),并控制客户端计算机的数据访问。数据节点负责实际的数据存储,为此会根据需要创建、删除和复制数据块。31

数据复制是海杜普分布式文件系统的基本特性。从图4中我们看到,数据块A同时存储在数据节点1和数据节点2中。重要的是,将数据块存储为多个副本,以保证在一个数据节点失效时,其他节点能够接管并继续处理任务而不至于丢失数据。为了跟踪哪些数据节点(如果有的话)已经失效,主管理节点每隔三秒会从各数据节点接收一条消息,也就是网络心跳监测。如果没有收到消息,则可推测所关涉的数据节点已经停止运行。因此,如果数据节点1无法发送心跳汇报,则数据节点2将成为操作数据块A的数据节点。如果主管理节点丢失,情况就不同了,在这种情况下,必须要使用内置备份系统。

数据只被写入数据节点一次,但应用程序将从中多次读取。每个数据块通常只有64Mb,因此有很多很多的数据块。主管理节点的另一个功能是,确定在当前使用条件下哪一个为最佳数据节点,从而确保快速访问和处理数据。随后,客户端计算机就从所选出的最佳节点访问数据块。数据节点会随存储的需要适时添加,这一特征被称为水平可扩展性。

与关系数据库相比较,海杜普分布式文件系统的一个主要优点是:你可以收集大量数据,并不断添加数据,而且此时无须明了以后这些数据有何种用途。比如,脸书就使用海杜普来存储其不断增加的数据。任何数据都不会丢失,因为海杜普以原始格式存储所有的内容。根据需要添加数据节点很廉价,也不需要对现有节点进行更改。如果先前的节点变得冗余,也很容易让它们停止运行。正如我们所看到的,具有可识别的行和列的结构化数据存储在关系数据库管理系统中较为容易,而非结构化数据则可以使用分布式文件系统存储,这样做不仅廉价,而32且方便。

用于大数据的非关系型数据库

NoSQL是Not Only SQL的缩写,意为“不仅是SQL”,它是非关系型数据库的统称。为什么需要一个不使用结构化查询语言的非关系型模型?我们可以简短地回答说:非关系型模型可以使我们不断添加新数据。非关系型模型具有管理大数据所必备的基本功能,即可扩展性、有效性和高性能。使用关系数据库,我们无法保证在不丧失功能的情况下进行数据的持续垂直扩展,而使用非关系型数据库,则可以通过水平扩展保持数据库的高性能。在描述非关系型分布式数据库基础架构,以及阐明其适用于大数据的原因之前,我们先要了解CAP定理。

CAP定理

2000年,美国加州大学伯克利分校计算机科学教授埃里克·布鲁尔提出了CAP定理,CAP分别指一致性(C)、可用性(A)和分区容错性(P)。对于分布式数据库系统来说,一致性要求同类节点中存储的数据相同。因此,在前文的图4中,数据节点1中的数据块A应该与数据节点2中的数据块A相同。可用性要求如果某个节点发生了故障,其他节点仍然能继续运行——如果数据节点1发生故障,数据节点2必须要继续运行。由于数据和数据节点分布在互为物理隔断的服务器上,这些机器之间的通信难免有时会失败。通信失败的情况被称为网裂。分区容错性要求,即便发生了这种情况,系统也要继续运行。

CAP定理的精髓在于,对于任何共享数据的分布式计算机系统来说,只能同时满足上述三个标准中的两个。因此,系统有如下三种可能性:具有一致性和可用性;具有一致性和分区容33错性;或者具有分区容错性和可用性。请注意,由于在关系数据库管理系统中,网络未进行分区,因此只涉及一致性和可用性,并且关系数据库管理系统模型也同时满足这两个标准。在非关系型数据库中,由于分区是必然的存在,因此我们必须要在一致性和可用性之间做出选择。通过牺牲可用性,我们可以得到一致性。如果我们选择牺牲一致性,那么数据有时候会因服务器不同而有差异。

首字母缩略词BASE可以便捷地描述这种情况。这个缩略词有点像人为杜撰的,它指的是“基本可用(BA)、软状态(S)和最终一致(E)”。选择BASE的目的,是为了与关系数据库的ACID属性进行比照。在这里,“软状态”指的是对一致性要求的灵活性,可以允许有一段时间数据的不同步。最终目的是不放弃这三个标准中的任何一个,找到优化三者的方法,以达成妥协。

非关系型数据库的架构

由于结构化查询语言的无效,才有了非关系型数据库的诞生。例如,对于我们在图4中看到的连接查询,结构化查询语言是做不到的。非关系型数据库有四种主要类型:键值存储数据库、列存储数据库、文档型数据库和图形数据库。它们对于存储大型结构化和半结构化数据都非常有用。最简单的是键值存储数据库,它由一个标识符(键)和与该键相关的数据(值)组成,如图5所示。请注意,此处的“

Return Main Page Previous Page Next Page

®Reader's Club