打字猴:1.700432121e+09
1700432121 驾驭大数据 [:1700430564]
1700432122 4.3 海量并行处理系统
1700432123
1700432124 海量并行处理(Massively Parallel Processing,MPP)数据库系统已经出现几十年了。不同供应商的系统架构可能存在差异,但对于存储并分析海量数据来说,MPP是最成熟、经过验证的、使用最广泛的处理机制。MPP到底是什么?它有什么特别之处?
1700432125
1700432126 一个MPP数据库会把数据切分成不同的独立数据块,由独立存储与CPU资源进行管理。在概念上,这有点像把一些数据导入您家里多台电脑构成的网络中。MPP打破了数据被仅拥有一个CPU单元和磁盘的中央服务器进行管理的限制。MPP系统中的数据被切分导入一系列的服务器中,存储于不同CPU单元管理的不同磁盘里。图4-3说明了MPP的原理。
1700432127
1700432128
1700432129
1700432130
1700432131 图4-3 海量并行处理系统的数据存储
1700432132
1700432133 为什么MPP架构有如此巨大的威力?想象一下,您正在一条六车道的高速公路上开车,假如六车道变成一车道,即使只发生在某一小段距离内,这都会带来可怕的交通拥堵。如果从出发地到目的地始终都是六车道,那么交通会顺畅得多。虽然在某些时刻比如高峰期,拥堵仍然不可避免,但也不会持续很长时间,这让公路状况变好了很多。在非MPP架构的数据库中,即使不是全过程,在某些处理环节,也会出现六车道变成一车道的情况。在车流不多的情况下,一车道也没问题,一旦出现大的车流量就会出现问题。这就是MPP架构处理海量数据时无与伦比的优势,它开放了更多车道让车辆快速通过。
1700432134
1700432135 让我们来看一个数据库的例子。假如有一张1T的数据表,一个传统的数据库在同一时间只能查询一行。如果是一个拥有10个处理单元的MPP系统,它可以把这个1T的数据表切分成10份,每份100GB数据,并分配给不同的处理单元。这意味着在同一时间可以同时查询10份100GB的数据。如果需要更强大的分析能力和更快的分析速度,只要增加更多的处理单元,系统能力就会得到提高。
1700432136
1700432137 分工合作!
1700432138
1700432139 一个海量并行处理架构(MPP)的数据库,会把数据分配给不同的CPU单元和不同的磁盘空间。逻辑上,这类似于拥有几十台甚至几百台个人电脑,每台电脑存储一部分数据。在执行查询时,用不同处理单元同时执行的许多小型查询替代了一个单一的大型查询,查询速度自然就快了很多。
1700432140
1700432141 在这个数据库的例子中,如果这个系统升级到了20个处理单元,那么就不是同时进行10次100GB的查询,而是同时进行20次50GB的查询,这相当于100%的性能提升。当查询要求不同数据单元的数据进行信息交互时,事情会更复杂一些,但是MPP系统在设计时就已经考虑到了这一点,因此可以非常快速地处理这种情况,如图4-4所示。
1700432142
1700432143
1700432144
1700432145
1700432146 图4-4 传统查询与MPP查询的比较
1700432147
1700432148 MPP系统会制造一定程度的数据冗余,同一份数据可以同时存储在不同的地方,这样做的好处是,一旦出现系统故障,数据恢复会非常简单。MPP系统里的资源管理工具会管理这些CPU和磁盘空间,查询优化器会对执行的查询任务进行优化,这都使得整个系统变得更容易管理,计算效率也更高。对这些内容更深度层次的讨论不在本书的范围内。
1700432149
1700432150 驾驭大数据 [:1700430565]
1700432151 4.3.1 使用MPP系统进行数据准备与评分
1700432152
1700432153 MPP能够给复杂分析带来巨大提升的原因是,复杂分析的主要困难都发生在数据处理阶段。在数据处理阶段,人们要对数据进行大量的连接与汇总,生成新的衍生数据并对数据进行各种转换。在这个过程中,来自不同数据源的各种数据实现了整合。连接在前面的章节已经介绍过了,而汇总则意味着把多条记录转换成一条记录,从而获得更全面的信息。例如,抽取客户的多条交易记录,计算客户的总体销售量与单次平均销售量。生成衍生指标与数据转换则包含一系列的复杂操作过程,如计算客户每次交易的各类占比,或使用log或平方根等数学函数以获得新的分析指标。
1700432154
1700432155 这些数据处理任务的逻辑通常来说并不复杂,这正是关系型数据库,以及结构化查询语言(Structured Query Language,SQL)适合执行的任务。对大多数分析而言,今天的SQL,即使不能支持所有也可以支持绝大部分的数据处理工作。SQL的使用正是库内处理理念在MPP系统的具体表现。分析师再也不需要把数据从数据库中抽取出来并通过分析工具进行处理,相反地,他们可以简单地通过撰写并提交SQL脚本,就可以把这些复杂的数据处理工作交给数据库执行。
1700432156
1700432157 仅仅在10年前,SQL还存在一些缺陷,难以支持高级分析需要的某些复杂计算。但现在,SQL已经强大了许多。事实上,SQL的一些限制条件已经不存在了,例如,SQL在处理某一行数据时不能了解其他行数据。现在已经出现了一些叫“窗口式汇集(Windowed Aggregates)”的SQL函数,它们可以在处理某一行数据的同时,对其他区域的数据进行查询。通过这些SQL函数,查询某一个交易是客户的第一次还是最后一次交易就很轻松了,这使得数据处理过程也发生了变化。某些高级分析工具为数据准备过程提供的处理过程,完全可以使用SQL的这些函数来实现。
1700432158
1700432159 在SQL拥有这个强大功能之前,为了进行必要的数据处理,人们不得不把数据从数据库中抽取出来。幸运的是,随着SQL的发展,已经不再需要这样做了。数据处理过程中的绝大部分操作都可以通过SQL在数据库内实现。最近也出现了一些新的整合处理方式,我们将会在后面进行讨论。
1700432160
1700432161 不要低估SQL!
1700432162
1700432163 在过去的这些年,SQL已经强大了很多,现在它可以胜任几乎所有的数据处理任务。分析专家可以使用SQL或者其他分析工具把数据处理过程提交给数据库执行,从而显著扩大了分析人员可以处理的数据规模,而这对于大数据格外重要。
1700432164
1700432165 作为库内处理理念的发展趋势,分析工具的很多厂商已经开始在分析软件中内置把分析流程提交给数据库执行的功能。在这些工具里,这些分析流程都已经开发好了,但是这些软件现在发现,如果可以连接到MPP数据库引擎,软件就可以把处理复杂任务的指令提交给数据库,让数据库来执行处理任务,而无需抽取大量数据。
1700432166
1700432167 分析工具将分析流程内置到数据库中的演进过程意味着,分析专家现在可以自由地选择他们感到顺手的、具有高度可扩展性的分析环境。与此同时,分析应用仍然在将更多的功能和特性集成到MPP数据库中,这将进一步增加库内分析的影响力。
1700432168
1700432169 库内处理也被广泛的用于各种评分模型。通常,我们会使用抽样数据来建立模型,但使用这个模型来进行评分,则需要针对全部数据。例如,通过部分抽样的客户数据建立了一个客户购买倾向的评分模型,到了应用这个模型时,则需要对所有客户进行评分,这样才能挑选出得分最高的客户来进行营销。把所有数据从数据库中抽取出来进行评分的传统做法,即使不是完全不可行,也是不实用的,因为抽取全部数据进行处理会耗费大量的时间。
1700432170
[ 上一页 ]  [ :1.700432121e+09 ]  [ 下一页 ]