购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第2章

大数据应用架构及关键技术

随着大数据应用的爆发性增长,此前传统的设计已经无法满足大数据应用的需要,它已经衍生出了属于自己独特的架构,并且直接推动了存储、网络以及计算技术的发展。

2.1 大数据应用架构

随着信息技术的发展,各大企业以及政府部门都以各种形式存储了大量的数据。而这些数据中往往就蕴含了十分有价值的信息,或是用户的购买习惯和趋势,或是社会舆论的导向。这些知识、规律的获取并不是靠传统对数据的处理手段就可以发现的,因此对这些数据中蕴含的知识进行挖掘就是一件很有意义的事。

但是,如今对数据存储能力已由以前的MB、GB级别上升到了TB、PB级别,而且数据的结构也是多种多样,如何对这些大量的,结构多样的数据进行处理,不仅是对传统的数据挖掘算法提出了的新的挑战,更是对计算模式提出了新要求。如何快速有效地处理规模大,结构复杂的数据,已经成为当今的一个热点问题。

大数据应用主要包括以下三类应用架构:MapReduce、Hadoop、Spark。

2.1.1 MapReduce

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,是大数据普遍采用的应用架构。概念映射(Map)和归约(Reduce),和它们的主要思想,都是从函数式编程语言里借鉴来的,还有从矢量编程语言里借鉴来的特性。在Google,MapReduce用在非常广泛的应用程序中,包括分布Grep、分布排序、Web连接图反转、每台机器的词矢量、Web访问日志分析、反向索引构建、文档聚类、机器学习、基于统计的机器翻译等。超过一万个不同的项目已经采用MapReduce来实现,包括大规模的算法图形处理、文字处理、数据挖掘、机器学习、统计机器翻译以及众多其他领域。本书主要介绍MapReduce编程模型实现关联规则的挖掘算法,从而使挖掘算法可以应用在大规模数据的环境下。

MapReduce设计上具有以下主要的技术特征。

(1)向“外”横向扩展,而非向“上”纵向扩展

即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器,而非价格昂贵、不易扩展的高端服务器。对于大规模数据处理,由于有大量数据存储需要,显而易见,基于低端服务器的集群远比基于高端服务器的集群优越,这就是为什么MapReduce并行计算集群会基于低端服务器实现的原因。

(2)失效被认为是常态

MapReduce集群中使用大量的低端服务器,节点硬件失效和软件出错是常态,因而一个良好设计、具有高容错性的并行计算系统不能因为节点失效而影响计算服务的质量,任何节点失效都不应当导致结果的不一致或不确定性。任何一个节点失效时,其他节点要能够无缝接管失效节点的计算任务,当失效节点恢复后应能自动无缝加入集群,而不需要管理员人工进行系统配置。

MapReduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重启技术,使集群和计算框架具有应对节点失效的健壮性,能有效处理失效节点的检测和恢复。

(3)为应用开发者隐藏系统层细节

软件工程实践指南中,专业程序员认为之所以写程序困难,是因为程序员需要记住太多的编程细节(从变量名到复杂算法的边界情况处理),这对大脑记忆是一个巨大的认知负担,需要高度集中注意力。而并行程序编写有更多困难,如需要考虑多线程中诸如同步等复杂繁琐的细节。由于并发执行中的不可预测性,程序的调试查错也十分困难,而且大规模数据处理时程序员需要考虑诸如数据分布存储管理、数据分发、数据通信和同步、计算结果收集等诸多细节问题。

MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么(What to compute),而具体怎么去计算(How to compute)就交由系统的执行框架处理,这样程序员可从系统层细节中解放出来,而致力于其应用本身的算法设计。

(4)顺序处理数据、避免随机访问数据

大规模数据处理的特点决定了大量的数据记录难以全部存放在内存,而通常只能放在外存储中进行处理。由于磁盘的顺序访问要远比随机访问快得多,因此MapReduce主要设计为面向顺序式大规模数据的磁盘访问处理。

为了实现面向大数据集批处理的高吞吐量的并行处理,MapReduce可以利用集群中的大量数据存储节点同时访问数据,以此利用分布集群中大量节点上的磁盘集合提供高带宽的数据访问和传输。

(5)把处理向数据迁移

传统高性能计算系统通常有很多处理器节点与一些外存储器节点相连,如用存储区域网络(Storage Area,SAN Network)连接的磁盘阵列,大规模数据处理时外存文件数据I/O访问会成为一个制约系统性能的瓶颈。

为了减少大规模数据并行计算系统中的数据通信开销,代之把数据传送到处理节点(数据向处理器或代码迁移)时,应当考虑将处理向数据靠拢和迁移。MapReduce采用了数据/代码互定位的技术方法,计算节点将首先尽量负责计算其本地存储的数据,以发挥数据本地化特点,仅当节点无法处理本地数据时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。

(6)平滑无缝的可扩展性

这里指出的可扩展性主要包括两层意义上的扩展:数据扩展和系统规模扩展性。

理想的软件算法应当能随着数据规模的扩大而表现出持续的有效性,性能上的下降程度应与数据规模扩大的程度相当;在集群规模上,要求算法的计算性能应能随着节点数的增加保持接近线性程度的增长。绝大多数现有的单机算法都达不到以上理想的要求,把中间结果数据维护在内存中的单机算法在大规模数据处理时很快失效,从单机到基于大规模集群的并行计算从根本上需要完全不同的算法设计,而MapReduce在很多情形下能实现以上理想的扩展性特征。

多项研究发现,对于很多计算问题,基于MapReduce的计算性能可随节点数目增长保持近似于线性的增长。

2.1.2 Hadoop

Hadoop是一款开源软件框架的大数据应用架构,主要用于开发数据密集型分布式应用。Hadoop是Apache公司根据Google公司发表的关于MapReduce的论文和相关档案自主研发而成,它实现了MapReduce编程模型,并实现了分布式文件系统,用来存储各个计算节点上的数据。此外,Hadoop还有一系列子项目,例如Hive、Pig和Hbase等,这些基于Hadoop的子项目所开发出来的工具都极大地方便了程序员在Hadoop上进行开发和工作。

目前Hadoop共有两代:一代被命名为Hadoop1.x,它所使用的计算框架为MapReduceV1;二代Hadoop被命名为Hadoop2.x,它所使用的计算框架为MapReduceV2,又称Yarn。

(1)Hadoop1.x

Hadoop可以从单一节点扩展的多个节点,图2-1是Hadoop1.x的简单的框架示意图。

图2-1 Hadoop 1.x框架示意图

当一个客户端(Client)向一个Hadoop集群发出一个请求时,此请求先由JobTracker进行管理。之后JobTracker与控制节点(NameNode)联合将工作分发到离它所处理的数据尽可能近的节点上。控制节点是文件系统的主系统,它来执行数据分发和复制。JobTracker 将Map和Reduce任务安排到一个或多个TaskTracker上,TaskTracker与数据节点(DataNode)一起来执行来自JobTraker的Map和Reduce任务。当Map和Reduce任务完成时,TaskTracker会告知JobTracker,后者确定所有任务的完成时间并最终告知客户端作业已完成。

从框架示意图中不难看出Hadoop 1 .x存在的问题,第一,所有的任务分发和任务执行都由JobTracker来完成,如果JobTracker所在的节点出了故障,将导致整个系统的瘫痪;第二,这个框架也由于将任务分发集中在JobTraker上,集群的扩展性受到了JobTraker所在的节点的性能的制约,所以在这个架构下,Hadoop只能进行有限的扩展。因此,针对以上单点故障和扩展性弱的问题,Apache公司于2013年发布了Hadoop 2.x版本,用以提高Hadoop的扩展性,支持更多的分布式模型。

(2)Hadoop 2.x

图2-2所示的是Hadoop 2.x的一个框架示意图。

图 2-2 Hadoop 2.x框架示意图

Hadoop 2.x框架的核心是资源管理(ResourceManager)。这个实体控制着整个集群计算资源的分配和管理,具体来说就是将各种计算资源资源安排给每个节点管理(NodeManager)。但是ResourceManager并不是独自管理和分配计算资源,它与创建应用(Application Master)一起分配资源,与NodeManager一起启动和监视它们的基础应用程序的消耗。所以,Application Master承担了以前的TaskTracker的一些任务,ResourceManager承担了以前JobTracker的任务。

这样做的一个最大的好处就是不会出现像上一代中所有的单点故障问题。其次还增强了Hadoop的扩展性。更重要的是,使得Hadoop可以应用于更多的分布式编程模型,而不仅限于MapReduce,增强了Hadoop的适用性。

2.1.3 Spark

Spark是UC Berkeley AMP lab所开源的类,Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写分布式文件系统(HDFS),因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark的框架如图2-3所示。

图2-3 Spark框架示意图

(1)Spark与Hadoop的对比

首先,Spark的中间数据放到内存中,对于迭代运算效率更高。

其次,Spark更适合于迭代运算比较多的机器学习(ML,Machine Learning)和数据挖掘(DM,Data Mining)运算。因为在Spark里面,有弹性分布式数据集(RDD)的抽象概念。

再次,Spark比Hadoop更通用。Spark提供的数据集操作类型有很多种,不像Hadoop只提供了Map和Reduce两种操作。比如Map、Filter、 FlatMap、 Sample、 GroupByKey、 ReduceByKey、 Union、 Join、Cogroup、MapValues、Sort、PartionBy等多种操作类型,Spark把这些操作称为Transformations,同时还提供Count、 Collect、Reduce、Lookup、Save等多种行为(Actions)操作。

这些多种多样的数据集操作类型,给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Hadoop那样就是唯一的Data Shuffle一种模式,用户可以命名、物化、控制中间结果的存储、分区等,可以说编程模型比Hadoop更灵活。

不过由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如Web服务的存储或者是增量的Web爬虫和索引,就是对于那种增量修改的应用模型不适合。

(2)容错性

在分布式数据集计算时通过Checkpoint来实现容错,而Checkpoint有两种方式:一个是Checkpoint Data;另一个是Logging the Updates。用户可以控制采用哪种方式来实现容错。

(3)可用性

Spark通过提供丰富的Scala、Java,Python API及交互式Shell来提高可用性。

(4)Spark与Hadoop的结合

Spark可以直接对HDFS(Hadoop Distributed File System)进行数据的读写,同样支持Spark on YARN。Spark可以与MapReduce运行于同集群中,共享存储资源与计算,数据仓库Shark实现上借用Hive,几乎与Hive完全兼容。

(5)Spark的适用场景

Spark是基于内存的迭代计算框架,适用于多次操作特定数据集的应用环境。反复操作的次数越多,所读取的数据量越大,受益越大。在数据量小但计算密集度较大的应用环境,不适于使用Spark。Spark在大数据领域更通用,适用面更广泛。

2.2 大数据处理技术

随着大数据时代的到来,海量复杂数据成为当前社会的重要特征,对大数据进行分析和处理的技术也不断地丰富起来。数据处理技术的合理运用可以让庞大的数据量变得有次序化,从而可以更好地为人类社会的发展做出贡献。

下面将简要介绍几种大数据处理的关键技术。

(1)数据挖掘和分析

大数据只有通过分析才能获取很多智能的、深入的、有价值的信息。现如今,越来越多的应用涉及大数据,而这些大数据的属性与特征,包括数量、速度、多样性等,呈现了大数据不断增长的复杂性,所以大数据的分析方法就显得尤为重要,可以说是数据资源是否具有价值的决定性因素。

大数据分析的理论核心就是数据挖掘,各种数据挖掘算法基于不同的数据类型和格式,可以更加科学地呈现出数据本身具备的特点,正是因为这些公认的统计方法使得深入数据内部、挖掘价值成为可能。另一方面,也是基于这些数据挖掘算法才能更快速地处理大数据。

数据挖掘和分析的相关方法如下。

① 神经网络方法。神经网络可用于数据挖掘的分类、聚类、特征挖掘、预测和模式识别等方面,在数据挖掘中占有举足轻重的作用。起初,神经网络在数据挖掘中的应用未被看好,其主要原因是神经网络具有结构复杂、可解释性差、训练时间长等缺陷。但其对噪声数据的高承受能力和低错误率的优点,以及各种网络训练算法的陆续提出与优化,尤其是各种网络剪枝算法和规则提取算法的不断提出与完善,使得神经网络在数据挖掘中的应用越来越为广大使用者所青睐。神经网络模型大致可分为三种,用于预测和模式识别等领域的前馈式网络;以Hopfield离散模型和连续模型为代表,主要用于联想记忆和优化计算的反馈式网络;以ART模型和Kohonen模型为代表,主要用于聚类分析的自组织网络。

② 遗传算法。遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法,是一种仿生全局优化方法,具有隐含并行性、易于和其他模型结合等性质,也是数据挖掘的主要算法之一。遗传算法的应用还体现在与神经网络、粗糙集等技术的结合上,如利用遗传算法优化神经网络结构,在不增加错误率的前提下,删除多余的连接和隐层单元;用遗传算法和BP算法结合训练神经网络,然后从网络提取规则等。

③ 决策树方法。决策树是被研究最多的数据挖掘方法之一,是一种常用于预测模型的算法,它通过一系列规则将大量数据有目的地分类,从中找到一些有价值的、潜在的信息,在数据挖掘中,决策树方法主要用于分类。它的优点是描述简单、分类速度快、易于理解、精度较高,特别适合大规模的数据处理,最有影响和最早的决策树方法是由Quinlan提出的著名的基于信息墒的ID3算法。

④ 粗糙集方法。粗糙集理论是一种研究不精确、不确定知识的数学工具,粗糙集处理的对象是类似二维关系表的信息表。目前成熟的关系数据库管理系统和新发展起来的数据仓库管理系统,为粗糙集的数据挖掘奠定了坚实的基础。粗糙集理论能够在缺少先验知识的情况下,对数据进行分类处理。因此,基于粗糙集的数据挖掘算法实际上就是对大量数据构成的信息系统进行约简,得到一种属性归约集的过程,最后抽取规则。

⑤ 覆盖正例排斥反例方法。利用覆盖所有正例、排斥所有反例的思想来寻找规则,首先在正例集合中任选一个种子,到反例集合中逐个比较。与字段取值构成的选择种子相容则舍去,相反则保留。按此思想循环所有正例种子,将得到正例的规则,比较典型的算法有Michalski的AQ11方法、洪家荣改进的AQ15方法以及他的AE5方法。

⑥ 统计分析方法。在数据库字段项之间存在两种关系:函数关系和相关关系,对它们的分析可采用统计学方法,例如常用统计分析、回归分析、相关分析、差异分析等。

⑦ 模糊集方法。利用模糊集合理论对实际问题进行模糊评判、模糊决策、模糊模式识别和模糊聚类分析。系统的复杂性越高,模糊性越强,一般模糊集合理论是用隶属度来刻画模糊事物的亦此亦彼性。

(2)内存计算

内存计算实质上是中央处理器(CPU)直接从内存而非硬盘上读取数据,并对数据进行计算、分析。它以大数据为中心,通过对体系结构及编程模型等进行重大变革,最终显著提升数据处理性能的新型计算模式。在应用层面,内存计算主要用于数据密集型计算的处理,尤其是数据量极大且需要实时分析处理的计算,例如将一个企业近十年所有的财务、营销、市场等各方面的数据一次性地保存在内存里,并在此基础上进行数据分析。当企业需要做快速的账务分析,或要对市场进行分析时,内存计算能够快速地按照需求完成。内存相对于磁盘,其读写速度要快很多倍。因此,在内存计算模式中,数据的存储与传输取代了计算任务成为新的核心。内存计算还可以模拟一些数据分析的结果,实现对市场未来发展的预测,如需求性建模、航空天气预测、零售商品销量预测、产品定价策略等。

(3)流处理技术

在大数据时代,数据的增长速度超过了存储容量的增长,在不远的将来,人们将无法存储所有的数据,同时数据的价值会随着时间的流逝而不断减少,此外很多数据因涉及用户的隐私无法进行存储,对数据进行实时处理的流处理技术获得了人们越来越多的关注。

数据的实时处理是一个很有挑战性的工作,数据流本身具有持续到达、速度快且规模巨大等特点,因此通常不会对所有的数据进行永久化存储,而且数据环境处在不断的变化之中,系统很难准确掌握整个数据的全貌。由于响应时间的要求,流处理的过程基本在内存中完成,其处理方式更多地依赖于在内存中设计巧妙的概要数据结构(Synopsis Data Structure),内存容量是限制流处理模型的一个主要瓶颈。以相变存储器(PCM)为代表的存储级内存(Storage Class Memory,SCM)设备的出现或许可以使内存不再成为流处理模型的制约。

数据流处理技术研究已经有十几年的历史,目前仍旧是研究热点。当前得到广泛应用的很多系统多数为支持分布式、并行处理的流处理系统,比较有代表性的商用软件包括IBM的StreamBase和InfoSphere Streams,开源系统则包括Twitter的Storm、Yahoo的S4等。

2.3 大数据存储技术

大数据时代,数据已经达到PB甚至EB级别,其中包括结构化数据(数据库、SQL、日志等)与非结构化数据(多媒体数据、传感器等),针对不同类型的海量数据,业界提出了不同的存储技术。

(1)分布式文件系统

分布式文件系统将大规模海量数据用文件的形式保存在不同的存储节点中,并用分布式系统进行管理。其技术特点是为了解决复杂问题,将大的任务分解为多个小任务,通过允许多个处理器或多个计算机节点参与计算的方法来解决问题。分布式文件系统可以支持多台主机通过网络同时访问共享文件和存储目录,以便多台计算机上的多个用户共享文件和存储资源。分布式文件系统架构更适用于互联网应用,可以更好地支持海量数据的存储和处理。基于新一代分布式计算的架构很可能成为未来主要的互联网计算架构之一。

目前分布式文件系统典型的产品有Google的GFS和Hadoop中的HDFS。可扩展的GFS是一个可扩展的分布式文件系统,是为了满足Google迅速增长数据处理需求与应用特性而设计的,它运行于廉价的普通硬件上,提供容错功能,给大量的用户提供总体性能较高的服务。HDFS是一个开源的分布式文件系统,它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS允许用户存储超大文件,最高效的访问模式是一次写入、多次读取,大文件会被分割成多个以64MB为单位的数据块。每一个数据块会在多个Datanode上存储多份副本,默认是3份。它具有很强的可扩展性和性能优势,同时运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用性。

(2)非关系型数据库技术(NOSQL)

数据存储技术经历了从手工管理到文件管理、再到数据库管理系统三个阶段,数据库技术中关系数据库占据了主要地位。随着Web应用的普及与数据量的爆炸性增长,数据作用域发生了改变,不再是整数和浮点等原始的数据类型,数据已经成为一个完整的文件,这对存储介质容量和数据检索速度等都提出了更高的要求,传统的关系数据库已经难以胜任这一角色,NOSQL数据库逐渐兴起。这种数据存储模式不需要固定的表结构,也不会出现表之间的连接操作和水平分割。弥补关系数据库在处理数据密集型应用方面表现出的性能差、扩展性差、灵活性差等问题,能够对数据库进行高并发读写、高效率存储和访问,具有高可扩展性和高可用性,并具有较低成本。NOSQL使得数据库具备了非关系、可水平扩展、可分布和开源等特点,为非结构化数据管理提供支持。

目前主流的NOSQL数据库有文档型数据库、列存储数据库和键值对存储数据库,大多应用于互联网行业。文档型存储数据库一般用类Json的格式存储,存储的内容是文档型的,这样也就有机会对某些字段建立索引,实现关系数据库的某些功能,满足海量存储和访问的数据库。列存储数据库是按列存储数据的,方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的I/O优势,具有高可扩展性、可用性,面向分布式计算的特点。键值对存储数据库可以通过关键值(Key)快速查询到其变量值(Value),一般来说存储不管Value的格式全部接收,满足极高读写要求。

(3)数据仓库

传统数据库并不是专为数据分析而设计,数据仓库专用设备的兴起,如Teradata、Netezza、Greeplum、SybaseIQ等,正表明面向事务性处理的传统数据库和面向分析的分析型数据库可能会走向分离。数据仓库专用设备,一般都会采用软硬一体的方式,以提供最佳性能。这类数据库采用更适于数据查询的技术,以列式存储或大规模并行处理(MPP)两大成熟技术为代表。数据仓库适合于存储关系复杂的数据模型(例如企业核心业务数据),适合进行一致性与事务性要求高的计算,以及复杂的商业智能(BI)计算。在数据仓库中,经常使用数据温度技术、存储访问技术来提高性能。

① 列式存储。对于图像、视频、统一资源定位器(URL)、地理位置等类型多样的数据,难以用传统的结构化方式描述,因此需要使用由多维表组成的面向列存储的数据管理系统来组织和管理数据。也就是说,将数据按行排序,按列存储,将相同字段的数据作为一个列族来聚合存储。不同的列族对应数据的不同属性,这些属性可以根据需求动态增加,通过这样的分布式实时列式数据库对数据统一进行结构化存储和管理,避免了传统数据存储方式下的关联查询。当只查询少数列族数据时,列式数据库可以减少读取数据量,减少数据装载和读入读出的时间,提高数据处理效率。按列存储还可以承载更大的数据量,获得高效的垂直数据压缩能力,降低数据存储开销。

② 数据温度技术。数据温度技术可以提高数据访问性能,区分经常被访问和很少被访问的数据。经常访问的是高温数据,这类数据存储在高速存储区,访问路径会非常直接,而低温数据则可以放在非高速存储区,访问路径也相对复杂。

③ 存储访问技术。近两年,存储访问技术不断变化,比如Teradata前几年推出的固态硬盘数据仓库,用接近闪存的性能访问数据,比原来在磁盘上顺序读取数据快很多。后来内存数据库产品逐渐兴起,这类产品在数据库管理系统(DBMS)软件上进行优化,规避传统数据库(数据仓库)读取数据时的磁盘I/O操作,节省访问时间。

2.4 大数据应用技术

(1)云计算及其编程模型MapReduce

2007年10月,Google与IBM开始在美国大学校园推广云计算计划,学生可以通过网络开发各项以大规模计算为基础的研究计划。因为它能提供灵活动态的IT平台、服务质量保证的计算环境以及可配置的软件服务的特点而逐渐成为热门话题,越来越多的IT巨头开始往这方面发展。云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件、服务),只需投入很少的管理工作,或与服务供应商进行很少的交互,就可以快速提供这些资源。就像人们每天都要用电,但不是每家自备发电机,它由电厂集中提供;人们每天都要用自来水,但不是每家都有井,它由自来水厂集中提供,云计算的最终目标就是将计算、服务和应用作为一种公共设施提供给公众,使人们能够像使用水、电那样使用计算机资源。目前,云计算主要包括基础设施即服务(IaaS)、数据存储即服务(DaaS)、平台即服务(PaaS)、软件即服务(SaaS)、云安全服务和虚拟化应用等内容。在单机芯片集成度已进入极小尺度级别,指令级并行度提升也已接近极限的今天,纵向扩展远远不能满足大数据处理的要求,而云计算的要求比较宽松的允许异构网络的横向扩展,无疑给大数据处理带来了方便。云计算能为大数据提供强大的存储和计算能力,可以迅速、方便地为大数据提供服务,另一方面,大数据的处理需求也为云计算提供了更多更好地应用场景。由此,云计算作为大数据的支撑技术而备受业界关注。

传统的关系数据管理技术主要用于联机事务处理(OLTP)应用、联机分析处理(OLAP)应用和数据仓库等,其经过了将近40年的发展,在扩展性方面的局限使其在大数据时代遇到了巨大的障碍,无法胜任大数据分析的任务。2004年,Google公司提出了MapReduce技术,以其良好的扩展性、容错性和大规模并行处理的优势,使得非关系数据管理和分析技术异军突起,广泛应用于机器学习、数据挖掘等诸多领域。MapReduce作为一种非关系数据库的数据管理技术阵营代表,从关系数据管理技术所积累的宝贵财富中挖掘可以借鉴的技术和方法,不断解决其性能问题,将计算推向数据也迎合了大数据时代的内在需要,成为大数据处理的基本工具。MapReduce对于大数据处理的基本构思是分而治之,将自动分割要执行的问题(例如程序)拆解成Map(映射)和Reduce(化简)的方式,在数据被分割后通过Map函数的程序将数据映射成不同的区块,分配给计算机机群处理达到分布式运算的效果,在通过Reduce函数的程序将结果汇整,从而输出开发者需要的结果。而Hadoop作为模仿MapReduce而实现的一个云计算开源平台,目前已成为最为流行的大数据处理平台。

(2)大数据获取技术

每天都有大量数据产生,并且这些数据通过不同的途径,以不同的形式被接收和记录。下面简单介绍几种常见的大数据获取途径 。

① 传感器技术。近年来,传感器技术蓬勃发展,无论是道路交通方面,还是医疗机构方面甚至是个人工作和生活场所,传感器无处不在,大量的数据源源不断地被传感器所接收。传感器的迅速普及,为大数据的获取提供了有力的保障。传感器技术的快速发展,也促进了传感器网络的逐步完善。由于构建传感器网络的设备、数据收集、数据存储等方面的差异性,网络孤岛普遍存在,如何解决异构网络所带来的数据共享问题一度成为研究者们面临的极大挑战。不过随后美国国家技术标准局(NIST)和IEEE共同组织了关于制定智能传感器接口和连接网络通用标准的研讨会,产生了IEEE1451传感器/执行器、智能变送器接口标准协议族,试图解决传感器市场上总线不兼容的问题。2005年,开放地理空间联盟(OGC)提出了一种新型的传感器Web整合框架标准,让用户能透过Web的界面来进行节点搜寻、数据获取及节点控制功能。

② Web 2.0技术。Web 2.0的概念始于2004年出版社经营者O'Reilly和Media Live International之间的一场头脑风暴论坛,所谓的Web 2.0指的是一个利用Web的平台,由用户主导而生成内容的互联网产品模式。Web 2.0注重的是用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。所谓网站内容的制造者是说互联网上的每一个用户的身份由单纯的“读者”进化为了“作者”以及“共同建设人员”,由被动地接收互联网信息向主动创造互联网信息发展,从而更加人性化。Web 2.0伴随着博客、百科全书以及社交网络等多种应用技术的发展,大量的网页点击与交流促使了大数据的形成,给人类日常生活方式带来了极大的变革。

③ 条形码技术。条形码(Barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息。

随着移动互联网行业的飞速发展,“我查查”这样的应用软件应运而生,让“货比三家”变成了不挪步、不询问、一扫便知的易事。作为国内首款基于手机客户端条码扫描应用的移动物联网信息查询平台,行业领先的条码识别技术是“我查查”的立根土壤,人们在买东西时只要照一照商品条码,该商品相关信息即刻显示在手机屏幕上,包括哪家店有卖、售价多少、店家的电话地址、营业时间、网址等所有信息。条形码被广泛应用于零售商店的收银以及车站售票等业务中,每天大量的商品销售记录都是通过扫描条形码而产生。近年来智能手机的盛行,手机应用如微信中的二维条形码也随处可见。

④ 移动终端技术。随着科学技术的发展,移动终端诸如手机、笔记本、平板电脑等随处可见,加上网络的宽带化发展以及集成电路的升级,人类已经步入了真正的移动信息时代。如今的移动终端已经拥有极强的处理能力,通信、定位以及扫描功能应有尽有,大量的移动软件程序被开发并应用,人们无时无刻不在接收和发送信息。目前,智能手机等移动设备的数量仍然在迅猛增长中,移动社交网络也会日益庞大和复杂,海量的数据穿梭其中,针对移动数据的处理也将越来越复杂。

(3)大数据存储系统。数据压缩、可视化等技术不断发展,使大数据存储系统具有了高性能的优势。但是诸多因素导致了其扩展性面临严峻的挑战,主要体现在:一是单机方面,并行数据库基于高端硬件设计,认为查询失败是特例且纠错复杂,不符合大规模集群失效常态的特性;二是集群方面,并行数据库对异构网络支持有限,各节点性能不均,容易引起“木桶效应”。总之,并行数据库的扩展性方面的缺陷使其面临大数据的处理往往力不从心。

由于并行数据库扩展性方面的缺陷无法胜任大数据的处理工作,以谷歌公司推出的BigTable为代表的未采用关系模型的NoSQL(Not only SQL)数据库由此诞生,NoSQL数据库具有模式自由、简易备份、接口简单和支持海量数据等特性,对于大数据的存储和处理十分有效。谷歌在谷歌文件系统(GFS)之上又设计了MapReduce的分布式数据库BigTable,为应用程序提供了比单纯的文件系统更方便、更高层的数据操作能力,BigTable提供了一定粒度的结构化数据操作能力,主要解决一些大型媒体数据(Web文档、图片等)的结构化存储问题。BigTable主要是一个分布式多维表,表中数据通过行关键字、列关键字和时间戳来进行索引和查询定位,并且BigTable对存储在表中的数据不做任何解释,一律视为字串,具体数据结构的实现由用户自行定义。BigTable中的数据均以子表形式保存在子表服务器上,最终以GFS的文件形式存储在GFS文件系统中。客户端程序直接和子表服务器通信,Chubby服务器完成对子表服务器的状态监控,主服务器通过查看Chubby服务器目录来终止出现故障的子服务器并将其数据转移至其他子服务器。另外,主服务器还完成子表的创建和负载均衡等操作。当然,由于MapReduce将本来应由数据库管理系统完成的诸如文件存储格式的设计、模式信息的记录、数据处理算法的实现等工作转移给了程序员,从而导致程序员负担过重。另外,MapReduce是面向非结构化的大规模数据处理,往往是一次处理,因而同等硬件条件下的性能也比并行数据库低。

(4)大数据分析技术

用于大数据集的分析方法很多,包括统计学、计算机科学等各个领域的技术。下面将简要介绍其中几种典型的大数据分析技术,当然,这些技术同样适用于少量数据集的分析,但大数据集环境下的应用无疑会发挥更加明显的作用。

① A/B测试。传统的对照测试(A/B测试),是一种把各组变量随机分配到特定的单变量处理水平,把一个或多个测试组的表现与控制组相比较,进行测试的方式。现在的A/B测试主要用于在Web分析方面,例如通过对比统计新旧网页的用户转化率,来掌握两种设计的优劣等。大数据时代的到来为大规模的测试提供了便利,提高了A/B测试的准确性。由于移动设备及技术的迅猛发展,移动分析也逐渐成为A/B测试增长最快的一个领域。

② 聚类分析。指将物理或抽象的集合分组成为由类似的对象组成的多个类的分析过程。聚类分析是一种探索性的数据挖掘分析方法,不需事先给出划分的类的具体情况,主要用在商业、生物学、因特网等多个领域中。对于大数据的分析处理,通过聚类可以简化后续处理过程,并且可以发现其中隐藏的某些规则,充分发挥了大数据的作用。

③ 集成学习。集成学习指的是使用一系列“学习器”进行学习,并使用某种规则把各学习结果进行整合从而获得比单个“学习器”更好的学习效果的一种机器学习方法。对于大数据的集成学习,可以更好地提炼和把握其中的本质属性。

④ 自然语言处理。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向,它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。人与计算机的通信交流往往存在很多歧义,如何消除这些歧义,将带有潜在歧义的自然语言输入转换成某种无歧义的计算机内部表示,是自然语言处理的主要问题。大数据时代意味着有大量的知识和推理来完成消除歧义现象的可能,这也给自然语言处理带来了新的挑战和机遇。大数据分析技术还有很多,例如模式识别、空间分析、遗传算法等,并且研究者们还在不断地寻找新的更有效的分析方法,另外通过结合多个方法来实现数据分析往往也能达到非常明显的效果。

(5)大数据的可视化

面对海量的数据,如何将其清晰明朗地展现给用户是大数据处理所面临的巨大挑战。无论是学术界还是工业界,对大数据进行可视化的研究从未停止。通过将大数据图形化、图像化以及动画化等展示出来的技术和方法不断出现,下面将介绍几种典型的案例。

① 宇宙星球图。俄罗斯工程师RuslanEnikeev根据2011年年底的互联网数据,将196个国家的35万个网站数据整合起来,并根据200多万个网站链接将这些“星球”通过“关系链”联系起来组成了因特网的“宇宙星球图”。不同颜色代表不同的国家,每个“星球”的大小根据其网站流量来决定,而“星球”距离远近根据链接出现的频率、强度等决定。类似地,对于具有复杂结构的社交网络,“宇宙星球图”同样也十分适用,可以根据个人的知名度、人与人之间的联系等进行绘画星球图。

② 标签云。“标签云”的设计思路主要是,对于不同的对象用标签来表示,标签的排列顺序一般依照字典排序,按照热门程度确定字体的大小和颜色。例如对于某个文档,出现频度越高的单词将会越大,反之越小。这样,便可以根据字母表顺序和字体的大小清晰地了解各单词的具体使用情况。

③ 历史流图。“历史流图”中,横坐标轴表示时间,纵坐标轴表示作者,不同作者的不同内容对应中间部分不同颜色和长度,随着时间的推移,文档的内容不断变化,作者也在不断增加中。通过对“历史流图”的观察,很容易看出每个人对该文档的贡献,当然,除了发现有人对文档给出有益的编辑外,也存在着一些破坏文档、删除内容的人,但总有逐渐被修复回去的规律。像维基百科等的词条注释文档,“历史流图”的可视化效果十分明显。关于大数据可视化方面的工作还有很多,不同的源数据有不同的可视化策略,大数据可视化研究工作仍需进行下去。 yHMiZiMuju18fSvVYZb2AphLpOdrjzNx6DI8CyrRnXnvUSOfMLqeLCVEEbIvmuJY

点击中间区域
呼出菜单
上一章
目录
下一章
×