《大数据处理技术的总结与分析16128.docx》由会员分享,可在线阅读,更多相关《大数据处理技术的总结与分析16128.docx(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据分析处理需求分类1 事务型处理在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统、12306网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。这类系统数据处处理特点包括括以下几点:一是事务处理型型操作都是细细粒度操作,每每次事务处理理涉及数据量量都很小。二是计算相对简简单,一般只只有少数几步步操作组成,比比如修改某行行的某列;三是事务型处理理操作涉及数数据的增、删删、改、查,对对事务完整性性和数据一致致性要求非常常高。四是事务性操作作都是实时交交互式操作,至至少能在几秒秒内执行完成成;五是基于以上特特点,索引是支撑事事务型处理一一个非常重要要的技术。在数据量和
2、并发发交易量不大大情况下,一一般依托单机机版关系型数数据库,例如如ORACLLE、MYSSQL、SQQLSERVVER,再加加数据复制(DataGGurad、 RMAN、MMySQL数数据复制等)等高可用措措施即可满足足业务需求。在数据量和并发发交易量增加加情况下,一一般可以采用用ORALCCE RACC集群方式或或者是通过硬硬件升级(采采用小型机、大大型机等,如如银行系统、运运营商计费系系统、证卷系系统)来支撑撑。事务型操作在淘淘宝、123306等互联联网企业中,由由于数据量大大、访问并发发量高,必然然采用分布式式技术来应对对,这样就带带来了分布式式事务处理问问题,而分布布式事务处理理很难做
3、到高高效,因此一一般采用根据据业务应用特特点来开发专专用的系统来来解决本问题题。2 数据统计分分析数据统计主要是是被各类企业业通过分析自自己的销售记记录等企业日日常的运营数数据,以辅助助企业管理层层来进行运营营决策。典型型的使用场景景有:周报表表、月报表等等固定时间提提供给领导的的各类统计报报表;市场营营销部门,通通过各种维度度组合进行统统计分析,以以制定相应的的营销策略等等。数据统计分析特特点包括以下下几点:一是数据统计一一般涉及大量量数据的聚合合运算,每次次统计涉及数数据量会比较较大。二是数据统计分分析计算相对对复杂,例如如会涉及大量量goupbby、 子查查询、嵌套查查询、窗口函函数、聚
4、合函函数、排序等等;有些复杂杂统计可能需需要编写SQQL脚本才能能实现。三是数据统计分分析实时性相相对没有事务务型操作要求求高。但除固固定报表外,目目前越来越多多的用户希望望能做做到交交互式实时统统计;传统的数据统计计分析主要采采用基于MPPP并行数据据库的数据仓仓库技术。主主要采用维度度模型,通过过预计算等方方法,把数据据整理成适合合统计分析的的结构来实现现高性能的数数据统计分析析,以支持可可以通过下钻钻和上卷操作作,实现各种种维度组合以以及各种粒度度的统计分析析。另外目前在数据据统计分析领领域,为了满满足交互式统统计分析需求求,基于内存存计算的数据据库仓库系统统也成为一个个发展趋势,例例如
5、SAP的的HANA平平台。3 数据挖掘数据挖掘主要是是根据商业目目标,采用数数据挖掘算法法自动从海量量数据中发现现隐含在海量量数据中的规规律和知识。数据挖掘主要过过程是:根据据分析挖掘目目标,从数据据库中把数据据提取出来,然然后经过ETTL组织成适适合分析挖掘掘算法使用宽宽表,然后利利用数据挖掘掘软件进行挖挖掘。传统的的数据挖掘软软件,一般只只能支持在单单机上进行小小规模数据处处理,受此限限制传统数据据分析挖掘一一般会采用抽抽样方式来减减少数据分析析规模。数据挖掘的计算算复杂度和灵灵活度远远超超过前两类需需求。一是由由于数据挖掘掘问题开放性性,导致数据据挖掘会涉及及大量衍生变变量计算,衍衍生变
6、量多变变导致数据预预处理计算复复杂性;二是是很多数据挖挖掘算法本身身就比较复杂杂,计算量就就很大,特别别是大量机器器学习算法,都都是迭代计算算,需要通过过多次迭代来来求最优解,例例如K-meeans聚类类算法、PaageRannk算法等。因此总体来讲,数数据分析挖掘掘的特点是:1、数据挖掘掘的整个计算算更复杂,一一般是由多个个步骤组成计计算流,多个个计算步骤之之间存在数据据交换,也就就是会产生大大量中间结果果,难以用一一条sql语语句来表达。2、计算应该能能够非常灵活活表达,很多多需要利用高高级语言编程程实现。二 大数据背景景下事务型处处理系统相关关技术在googlee、faceebook、t
7、taobaoo等大互联网网公司出现之之后,这些公公司注册和在在线用户数量量都非长大,因因此该公司交交易系统需要要解决“海量数据+高并发+数数据一致性+高可用性”的问题。为了解决该问题题,从目前资资料来看,其其实没有一个个通用的解决决方案,各大大公司都会根根据自己业务务特点定制开开发相应的系系统,但是常常用的思路主主要包括以下下几点:(1)数据库分分片,结合业业务和数据特特点将数据分分布在多台机机器上。(2)利用缓存存等机制,尽尽量利用内存存,解决高并并发时遇到的的随机IO效效率问题。(3)结合数据据复制等技术术实现读写分分离,以及提提高系统可用用性。(4)大量采用用异步处理机机制,对应高高并发
8、冲击。(5)根据实际际业务需求,尽尽量避免分布布式事务。1相关系统介绍绍1) 阿里CCORBARR系统阿里COBARR系统是一个个基于MYSSQL数据库库的分布式数数据库系统,属属于基于分布布式数据库中中间件的分布布式数据库系系统。该系统统是前身是陈陈思儒开发的的“变形虫”系统(以前前调研过),由由于陈思儒离离开阿里去了了盛大,阿里里当心“变形虫”稳定性等问问题,重新开开发该项目。该系统主要采用用数据库分片片思路,实现现了:数据拆拆分、读写分分离、复制等等功能。由于于此系统由于于只需要满足足事务型操作作即可,因此此相对真正并并行数据库集集群(例如TTeraDaata等),此此类系统提供供操作没
9、有也也不需要提供供一些复杂跨跨库处理,因因此该系统存存在以下限制制:(1)不支持跨跨库的joiin、分页、排排序、子查询询。(2)inseert等变更更语句必须包包括拆分字段段等。(3)应该不支支持跨机事务务(以前变形形虫不支持)。说白了此类系统统不具备并行行计算能力,基本上相当当于数据库路路由器!另外此类系统的的在实际应用用的关键问题题是,根据什什么对数据进进行切分,因因为切分不好好会导致分布布式的事务问问题。2) 阿里OOceanBBase系统统该系统也是淘宝宝为了解决高高并发、大数数据环境下事事务型处理而而定制开发的的一个系统。该该系统主要思思路和特点如如下:(1)他们发现现在实际生成成
10、环境中,每每天更新的数数据只占总体体数据的1%不到,因此此他们把数据据分为:基线线数据和增量量更新数据。(2)基线数据据是静态数据据,采用分布布式存储方式式进行存储。(3)只在一台台服务器上存存储和处理增增量更新数据据,并且是在在内存中存储储和处理更新新数据。(4)在系统负负载轻的时候候,把增量更更新批量合并并到基线数据据中。(5)数据访问问时同时访问问基线数据和和增量更新数数据并合并。因此这样好处是是:(1)读事务和和写事务分离离(2)通过牺牲牲一点扩展性性(写是一个个单点),来来避免分布式式事务处理。说明:该系统虽虽然能处理高高并发的事务务型处理,号号称很牛逼,但但其实也只是是根据电商的的
11、事务处理来来定制开发的的专用系统,个人认为其技术难度小于oracle等通用型的数据库。该系统无法应用到银行或者12306等,因为其事务处理的逻辑远远比电商商品买卖处理逻辑复杂。在目前的大数据据时代,一定定是基于应用用定制才能找找到好的解决决方案!3) 基于HHbase的的交易系统在hadoopp平台下,HHBASE数数据库是一个个分布式KVV数据库,属属于实时数据据库范畴。支支付宝目前支支付记录就是是存储在HBBASE数据据库中。HBASE数据据库接口是非非SQL接口口,而是KVV操作接口(基于Keyy的访问和基基于key范范围的scaan操作),因因此HBASSE数据库虽虽然可扩展性性非常好
12、,但但是由于其接接口限制导致致该数据库能能支持上层应应用很窄。基基于HBASSE应用的设设计中,关键键点是keyy的设计,要要根据需要支支持的应用来来设计keyy的组成。可以认为HBAASE数据库库只支持作为为KEY的这这一列的索引引。虽然目前前HBASEE有支持二级级索引的方案案,二级索引引维护将会比比较麻烦。2并发和并行区区别并发是指同时执执行通常不相相关的各种任任务,例如交交易型系统典典型属于高并并发系统。并行是通过将一一个很大的计计算任务,划划分为多个小小的计算任务务,然后多个个小计算任务务的并行执行行,来缩短该该计算任务计计算时间。两者主要区别在在于:(1)通讯与协协调方面:在在并行
13、计算中中,由于多个个小任务同属属一个大的计计算任务,因因此小任务之之间存在依赖赖关系,小任任务之间需要要大量通讯和和协调;相反反,并发中的的多个任务之之间基本相互互独立,任务务与任务之间间相关性很小小。(2)容错处理理方面:由于于并发任务之之间相互独立立,某个任务务执行失败并并不会影响其其它的任务。但但是并行计算算中的多个任任务属于一个个大任务,因因此某个子任任务的失败,如如果不能恢复复(粗粒度容容错与细粒度度容错),则则整个任务都都会失败。3本章总结数据量大不一定定需要并行计计算,虽然数数据量大,数数据是分布存存储,但是如如果每次操作作基本上还是是针对少量数数据,因此每每次操作基本本上都是在
14、一一台服务器上上完成,不涉涉及并行计算算。只是需要要通过数据复复制、数据缓缓存、异步处处理等方式来来支撑高并发发访问量三 大数据背背景下数据统统计分析技术术介绍随数据量变大,和和事务处理不不同的是,单单个统计分析析涉及数据量量会非常大,单单个统计分析析任务涉及数数据会分散在在多台服务器器上,且由于于计算量大,采采用单台服务务器进行计算算,会导致计计算时间非常常长,单个统统计分析任务务必须采用并并行计算方式式来加快单个个统计分析任任务执行速度度。1并行查询与并并行计算技术术介绍在大数据背景下下的数据统计计分析技术门门类很多,常常见的有:n MPP并并行数据库 : TerraDataa、Greee
15、nPlumm、Verttica等。n 基于MaapReduuce并行计计算框架的数数据仓库:HIVE(Haadoop平平台) 、TTenzinng(Gooogle公司司)n 基于Hbbase的PPhoeniix系统n HadooopDB系系统n EMC公公司的happt系统n MPP分分布式查询引引擎: Drremel、IImpalaa、Pressto、Shhard qquery、CCitusddb。n 基于SPPARK的SShark、基基于Dryaad的SCOOPE、基于于Tez的sstingeer。n 基于haadoop+indexx的JethhroDatta系统n 基于内存存计算的Drr
16、uid系统统这些系统都解决决了海量数据据下的数据统统计分析的问问题,并且这这些系统另外外一个共同特特点是都提供供了SQL或或者类SQLL接口。为了能够较好研研究这些系统统,我们需要要对并行查询询与并行计算算的相关技术术做一个简要要的介绍。首先所有的系统统都可以分为为三个层次: 语义层、并并行计算引擎擎层、分布式式存储层。语语义层提供一一个编程接口口让用户表达达所需要计算算,并负责把把该计算翻译译成底层并行行计算引擎可可以执行的执执行计划,并并由并行计算算引擎来执行行,最下面一一层是分布式式存储层。对于提供类SQQL接口并行行计算系统,语语义层可以认认为是SQLL解析层。1) 语义层SQL语言是
17、一一种声名式语语言,SQLL只是表达了了要做什么,而而没有表达怎怎么做。为此此,SQL解解析层主要作作用是:将用用户提交的基基于SQL的的统计分析请请求,转化为为底层计算引引擎层可以执执行的执行计计划。也就是是解决“怎么做”的问题。SQL解析层工工作主要包括括两个大方面面:(1) 通过语语法分析技术术来理解要做做什么。在关关系数据库中中,一般会把把SQL语言言分析后,形形成树型结构构的执行计划划。(2) 在语法法分析技术上上,利用各种种优化技术和和算法,找出出一种最经济济物理执行计计划。优化可以分为两两个方面:一一是逻辑层面面优化、二是是物理执行层层面优化。(1) 逻辑层层优化逻辑层面个人认认
18、为主要是因因为同样表达达一个分析请请求,有的人人SQL写的的好,有的人人SQL写的的烂,因此在在逻辑层面可可以通过一些些等价关系代代数变换,实实现查询重写写,将写的比比较烂的sqql变换为好好的写法。比较典型优化是是:“把投影和过过滤下沉,先先执行过滤和和投影操作”,减少中间间结果。(2) 物理层层优化物理层面优化是是在逻辑优化化后,结合实实际物理执行行过程,找出出最优的物理理执行计划。生生成物理查询询计划的工作作包括: 增加一些些操作符: 包括扫描和和排序等。 确定各个个操作符实现现算法。例如如扫描是全表表扫描还是利利用索引;JJoin是采采用HASHH连接、索引引连接、合并并排序等实现现算
19、法中的那那一种。 确定操作作符之间的数数据流转方法法:物化还是是流水线方式式。 采用基于于代价估算方方法确定最优优的物理执行行计划,目前前代价估算主主要是以估算算该物理计划划需要的IOO量。另外对对于并行数据据库,则还要要考虑通讯代代价,即尽量量减少数据在在各个机器之之间的传递。 在物物理层优化的的代价估算过过程中,代价价估算需要依依靠很多统计计信息,如表表有多大,表表中相关列的的值分布是什什么样子等。传传统数据库在在数据Loaad过程中会会事先计算好好这些统计信信息。并行计计算中还需要要考虑通讯代代价。需要要指出是,由由于imappla、Prresto、HHIVE等系系统只是一个个查询引擎,
20、它它们可以直接接查询以普通通文件方式存存储在HDFFS系统上的的文件,因此此这些系统一一般无法使用用索引和各种种统计信息来来进行物理执执行计划的优优化,这些系系统一般只能能在逻辑层进进行一些基于于规则静态优优化。根据SSHARK论论文,SHAARK系统支支持根据前面面一些节点计计算获得的信信息,来动态态优化后面执执行计划。(3) 物化化与流水线执执行方法一条SSQL语句对对开发人员而而言,感觉只只是一次调用用,但是实际际上在数据库库内部,一条条SQL语句句执行其实是是有多个操作作符组合而成成的的树型结结构计算流。如如下图:针对该计算流有有两种执行方方式:一是基基于物化或者者是实体化执执行方式,
21、另另外一种是基基于数据流的的执行方式。第一种方法的过过程是: 把把各个操作运运算排序,并并把每个操作作运算的输出出的中间结果果存储在磁盘盘上,直到被被另外一个操操作运算所读读取。另外一种方法是是同时交错进进行多个运算算,由一个运运算产生每个个元组直接传传递给下一个个运算,而不不将中间结果果存储到磁盘盘,也不用等等到前一个运运算全部运算算完毕。例如: 两个表表连接后,再再进行投影操操作。如果采采用第一种方方法,则需要要把两表连接中间间结果临时写写入磁盘,然然后再读取该该结果执行投投影操作。而而如果采用第第二种方法,则则连接操作一一旦产生一个个元组就可以以立刻送到投投影操作去进进行投影操作作。流水
22、线方法可以以极大避免大大量的中间结结果磁盘IOO。因此数据据库一般会采采取流水线方方法来执行。流流水执行方法法有两种模式式:一种是需需求驱动流水水线,也就是是从上层主动动向下层要求求元组,另外外一种是生产产者驱动流水水线执行方式式,由低层主主动产生元组组,由下层向向上层推。目前大部分数据据库引擎采用用的是需求驱驱动流水线,实实现方式采用用基于Graaefe提出出的迭代器模模型。该模型型把每个操作作都表达为由由三个接口: openn() , getnnext(), cloose()。每每个操作被调调用openn() 进行行准备工作,然然后通过反复复迭代被调用用getneext来获取取下一个元组组
23、,最后被调调用closse来进行清清理工作。 通过构建迭迭代器网络,也也就是迭代器器之间的互相相调用,就可可以实现需求求驱动流水线线。当然不是任何何操作都可以以流水执行,流流水执行条件件是:操作要要满足在接收收输入元组时时可以输出元元组。例如排排序操作就无无法进行流水水操作,在执执行排序操作作前都必须进进行实体化。(4) SQLL解析层与并并行计算引擎擎层由于不同并行计计算引擎层的的执行计划表表达不同,因因此不同系统统需要将SQQL解析成不不同的形式物物理执行计划划,例如:MPP关系数据据库一般是把把SQL解析析成树状结构构的物理执行行计划。HIVE、Teezningg数据库是把把SQL解析析
24、成DAG结结构的多个MMAPREDDUCE组合合。DRemel等等则类似MPPP关系数据据库,把SQQL解析成一一个树状结构构执行计划。微软SCOPEE则需要把类类SQL解析析成DAG结结构的Dryyad可执行行的执行计划划。SHARK则需需要把SQLL解析成基于于scalaa语言的DAAG结构执行行计划。并发发并行2) 并行计算算引擎层(1) 并行计计算形式并行化可以分为为水平并行(无依赖并行行)与垂直并并行(流水线线并行)两类类。如下图:如果两个操作OOP1、OPP2 无相互互依赖关系,则则称这两个操操作相互独立立。水平并行行化指的是互互相独立的多多个操作或者者一个操作内内互相独立的的多个
25、子操作作分别由不同同的处理机并并行执行的形形式。例如,排排序操作、扫扫描操作由不不同处理机并并行执行就是是水平并行化化的实例。水平并行中一个个非常常见的的就是基于数数据划分的并并行,例如MMAPREDDUCE,就就是通过将数数据划分到多多台服务器上上,并行执行行MAP和RReducee来进行并行行运算。也有有人把这种基基于数据划分分并行与操作作独立并行区区分开。垂直并行化则是是指存在流水水线方式依赖赖关系的操作作分别由不同同处理机并行行执行的形式式。流水线方方式依赖:如如果OP2无无需等待OPP1执行完毕毕即可在另一一处理机上开开始执行。由由于一般情况况下,流水的的级数远小于于处理的数据据条目
26、,因此此流水并行主主要意义是在在可以避免中中间结果磁盘盘IO操作,对对并行度的贡贡献相对较小小。(2) 并行计计算面临的问问题与并行计计算框架并行计算需要解解决的问题主主要包括几下下几个方面:自动并行化化、通讯、任任务调度、并并发控制、容容错、资源管管理。由于并并行计算面向向上述一系列列问题,因为为业界为了简简化并行程序序开发,提供供了一系列的的并行计算底底层库或者框框架。在高性能计算领领域,最常用用于并行计算算编程的库是是MPI库,但但是该库主要要只是解决通通讯问题。这这导致容错、资资源管理、任任务调度、并并行化等方面面问题需要程程序员来解决决,因此利用用MPI开发发并行程序相相对比较困难难
27、。最近一些年,各各大型互联网网公司开发开开发了一系列列的通用并行行计算框架。包包括谷歌公司司的MAPRREDUCEE框架、微软软公司的Drryad框架架(目前微软软已经停止该该项目开发,转转而支持haadoop)、谷谷歌公司基于于BSP模型型的Preggel框架、TTwitteer公司的SStorm框框架、Yahhoo公司SS4框架、HHortonnWorkss公司的Teez框架、BBerkelley大学的的sparkk框架等通用用并行计算框框架。有了这些框架了了,程序开发发时只需要编编写串行执行行程序即可,而而且也不用考考虑任务与任任务之间的并并发控制以及及通讯等问题题,其它所有有问题都有框
28、框架来解决 ,这样就大大大简化并行行程序开发难难度。例如采采用MAPRREDUCEE框架,我们们只需要提供供MAP函数数和Reduuce函数,这这些函数对程程序员而言,都都只是对本地地数据操作。目前虽然并行计计算框架很多多,但是可以以把它们分成成几个大类(基于BSPP并行图计算算引擎请参考考第四章):流数据并行计计算框架Storm、SS4是属于流流数据并行计计算框架,适适合对流数据据实时处理,也也就是在数据据写入磁盘前前对数据进行行实时并发运运算。这类特特点是计算不不变,数据一一直在变化。在在上一个文档档中,对此框框架做过详细细介绍,这里里不再详细介介绍。基于DAG通用用批处理并行行计算框架M
29、apReduuce、Teez、Dryyad、Sppark等属属于基于DAAG(有向无无环图)的通通用批处理并并行计算框架架。这类框架架是针对存储储在存储设备备上的一批数数据进行分析析处理,而且且把分析处理理流程利用DDAG模型来来表达。在这些框架中MMAPREDDUCE是最最早出现的框框架,而后面面出现的一系系列框架都为为了改进MRR框架不足而而出现的升级级版本。MR框架主要不不足是两个方方面:一是编程接口太太简单,表现现在单个MAAPREDUUCE无法表表达复杂运算算,所以在实实际应用环境境中都是通过过多个MR作作业组合来完完成一个任务务。为了简化化MR作业组组合,在早期期出现了一系系列项目
30、来执执行组和式MMR作业,例例如Casccadingg项目。另外外一个方面所所有问题都必必须转换为MMAP和REEDUCE模模式,导致程程序编写比较较麻烦。二是MR只支持持基于数据分分区并行方式式,不支持流流水线并行,采采用是步步物物化策略来提提高可靠性,当当是这种导致致大量中间结结果物化,IIO开销非常常大。因此Tez、DDryad、SSpark等等后续框架改改进主要针对对以下两点进进行改进:一是直接支持基基于DAG结结构表达方法法,DAG使使得用户能够够非常清晰地地写出非常复复杂的业务逻逻辑;二是通过支持流流水线并性方方式或者是尽尽量将中间结结果放内存等等方式,解决决中间结果物物化导致的I
31、IO开销问题题。Dryaad和Spaark框架在在执行运算时时,都会自动动识别可以采采取流水线方方式执行的计计算步骤,并并尽量采用流流水线执行方方式来执行。容错:由于支持持流水线并行行或者采取把把中间结果放放内存的方式式,因此要必必须考虑容错错的问题。由由于这些框架架都采用的是是DAG结构构,DAG中中一个节点所所代表计算的的执行是不会会对输入进行行修改(所谓谓函数式编程程),因此可可以多次重复复执行不会影影响计算。因因此如果某个个节点计算失失败,它可以以根据输入重重复计算,而而如果输入数数据也消失了了,则让前一一个节点重新新计算。所有有这一切都是是由框架自动动执行。当然需要指出的的是对一些流
32、流水线执行的的多个计算步步骤,如果某某个计算节点点失败,则只只能整个流水水线整体失败败。基于Tree结结构的MPPP并行查询引引擎MPP并行数据据库与Dreemel、iimpalaa、Pressto、Shhard qquery、CCitusddb都采用的的是基于Trree结构并并行查询引擎擎。此类并行行计算引擎共共同特点是:一是针对SQLL专用并行计计算引擎,只只支持SQLL或者类SQQL语义。二是执行计划都都是树状结构构;三是以流水线或或者将中间结结果放入内存存方式来实现现快速计算。四是粗粒度容错错机制。它们之间不同点点:一 MPP并行行数据库中并并行查询引擎擎与底层存储储是紧耦合的的,导致
33、如果果采用MPPP并行数据库库,则只能通通过SQL来来访问数据,无无法采用其他他计算引擎直直接处理存储储在数据库中中的数据。二 Impalla、Preesto都只只是一个并行行查询引擎,它它们可以直接接查询以文件件方式存储在在HDFS上上的数据,这这样同一份数数据既可以利利用这些引擎擎来实现交互互式查询,也也可以支持利利用其他计算算框架进行更更深入分析。三 Dremeel 只支持持Googlle自己的基基于嵌套结构构列式存储(Colummn IO)。该引擎也也主要适合于于聚合型计算算,不支持jjoin操作作。四 上述引擎中中只有MPPP并行数据库库可以利用索索引以及各种种统计信息来来优化物理执
34、执行过程,因因此该系统执执行效率应该该是最高。五 Dremeel、imppala都只只适合中间结结果越来越小小的查询,因因为这些系统统都是把中间间结果放在内内存,一旦某某个中间节点点输出结果超超过内存,则则整个任务会会失败,例如如大表之间JJoin。六 shardd querry和cittusdb 都是在单机机版本关系数数据库基础上上,采用增加加一层中间件件方式来支持持并行查询。n基于Treee并行计算引引擎与基于DDAG并行计计算引擎本质质区别基于Tree结结构并行计算算引擎与基于于DAG并行行计算引擎从从表面上看,它它们之间的主主要区别是在在于语义层面面:前者主要要专用与SQQL类,而后后
35、者更通用。但是MPP并行行关系数据库库引擎、Immapla等等都会支持通通过UDF来来扩展和解决决标准SQLL语言表达能能力,另外SSQL语言本本身可以通过过嵌套查询、子子查询、unnion等各各种方法表达达很复杂的计计算过程,因因此从语义表表达层面来讲讲他们之间不不存在本质区区别。这两者之间主要要区别还是在在于表达执行行计划结构方方面:树结构构是一个逐步步汇聚的一个个计算过程,无无法表达spplit结构构,因此基于于DAG表达达结构更灵活活和通用。个个人认为:树树型结构可能能更加适合采采用迭代器模模型来实现流流水线式的操操作(只有树树结构才有上上下层的关系系,因此方便便实现上层操操作符嵌套调
36、调用下层操作作符)。所以不是所有计计算都可以通通过一个复杂杂SQL语句句来表达!(5) 自动动并行化、数数据重分布、本本地调度并行计算引擎最最重要的一个个职责是自动动并行。根据据前面的并行行计算基础知知识,并行计计算的形式主主要包括:基基于数据划分分水平并行、基基于流水线垂垂直并行、基基于无依赖水水平并行三种种方式。大数据属于数据据密集型计算算,数据数量量远远超过计计算步骤数量量。因此基于于数据划分并并行方式是最最有效的一种种并行计算方方法。在整个个并行计算过过程中,基于于数据划分中中涉及数据可可以分为两大大类:原始数数据与中间结结果数据。n原始数据划划分以及SNN、SD架构构讨论原始数据则可
37、能能存在两种情情况:一是在在Shareed-notthing架架构中,原始始数据本身就就已经划分好好了,例如HHDFS或者者SN架构 MPP数据据库;另外一一种情况如ssharedd-diskk结构中,原原始数据没有有划分。第一种情况下针针对原始数据据划分并行计计算,就要受受该划分的限限制。例如在在MAPREEDUCE中中,map输输入是存储在在HDFS上上的数据文件件,因此MAAP实例个数数一是不能少少于该数据文文件分片数,二二是MAP实实例最好运行行在该数据文文件所在机器器,也就是要要求任务调度度时,能把该该任务调度到到特定机器上上,即所谓“本地调度”,将计算尽尽量移动到数数据。第二种情况
38、下,由由于所有计算算节点都可以以看到所有数数据,因此此此时可以根据据计算特点灵灵活选择:数数据划分粒度度、并行度、参参与计算的节节点。例如在在ORALCCE并性机制制中,ORAALCE可以以针对某张表表,按bloock或者ppartittion 为为单位进行划划分。根据上述分析我我们可以发现现SD架构相相对SN架构构,在针对原原始数据第一一级并性计算算时,SD架架构更灵活,SSN架构面临临的一个缺陷陷就是如果原原始数据分布布不均衡,则则存在计算倾倾斜问题。但是现在大部分分大的数据库库厂商的MPPP数据库还还是采用了SSN架构。根根据网上所查查资料来看,主要原因有有两点:一是SD架构下下,磁盘是
39、一一个共享资源源,计算节点点越多磁盘争争抢概率越大大(和RAIID随机IOO冲突道理一一样),导致致该架构可扩扩展性不够好好,也就是可可能计算节点点越多,效率率相反不会提提高。二是从缓存角角度来看,SSD架构下每每个机器缓存存都要面向全全数据库,会会导致命中概概率底下;目目前ORACCLE-RAAC开发一个个fusioon cacche技术,实实现了一个全全局共享缓存存来解决上述述问题,但是是可想而知这这会影响系统统可扩展性。因此超过一定规规模数据分析析系统,都是是采用SN架架构。中间结果数据划划分与数据重重分布中间结果是由各各个计算节点点产生的,因因此中间结果果生成是就是是分布在各个个参与计
40、算节节点之上的,因因此:一 :SD架构构下数据共享享好处,对中中间结果无效效。二 :如果由于于计算任务之之间需要,需需要在任务之之间传递中间间结果,则即即使是SD架架构也存在数数据重分布的的问题,主要要是中间结果果重分布,也也就是中间结结果传输。另外从该过程我我们还可以得得出另外一个个结论:一: 对于复杂杂的数据处理理,索引只能能影响第一级级计算,对于于中间结果,由由于只使用一一次,因此没没有必要去针针对中间结果果建立索引。也也就是即使我我们将数据存存储在关系型型数据库中,也也只有第一级级计算能有效效利用数据库库索引。二:即使采用并并行数据库,如如果我们的整整个计算过程程不能用一个个SQL语句
41、句来表达,则则我们必须自自己解决中间间结果的划分分与并性计算算的问题。(6)并行计算算引擎架构与与资源管理所有并行计算引引擎实现基本本上都是主从从结构,即一一个MASTTER + 多个slaave节点的的结构。由cclientt向MASTTER提交一一个job,然后由Maaster负负责将逻辑执执行计划变成成实际执行计计划,并由MMasterr负责将各个个任务分发到到各个slaave中,并并负责各个任任务的调度。MPP数据库查查询引擎架构构MAPREDUUCE架构和和该架构缺点点Mapreduuce框架中中,JobTTrackeer承当MAASTER的的职责,一般般和HDFSS中的NaddeN
42、odee节点安装在在一个服务器器上。TasskTraccker安装装在各个DaataNodde上,承担担Slavee的角色。流程如下:(1)首先用户户程序(Cllient Progrram)提交交了一个joob,jobb的信息会发发送到Jobb Traccker中,JJob Trrackerr是Map-reducce框架的中中心,他需要要与集群中的的机器定时通通信(heaartbeaat), 需需要管理哪些些程序应该跑跑在哪些机器器上,需要管管理所有joob失败、重重启等操作。(2)TaskkTrackker是Maap-redduce集群群中每台机器器都有的一个个部分,他做做的事情主要要是监视
43、自己己所在机器的的资源情况(资资源的表示是是“本机还能起起多少个maap-tassk,多少个个reducce-tassk”,每台机器器起map/reducce tassk的上限是是在建立集群群的时候配置置的),另外外TaskTTrackeer也会监视视当前机器的的taskss运行状况。(3)TaskkTrackker需要把把这些信息通通过hearrtbeatt发送给JoobTraccker,JJobTraacker会会搜集这些信信息以给新提提交的jobb分配运行在在哪些机器上上。MAPREDUUCE结构存存在以下缺点点:(1) jobbtrackker只能安安装在一台服服务器上,集集中式作业控
44、控制导致可扩扩展性不好,另另外JobTTrackeer负责事情情太多,容易易成为性能瓶瓶颈。(2) 资源调调度与编程模模型紧耦合,只只支持MAPPREDUCCE一种编程程模型。(3) 资源划划分太简单,每每个TaskkTrackker只是简简单把整个机机器资源按mmap taask sllot和reeduce task slot来来划分,而没没有考虑不通通任务所需的的内存和CPPU等的资源源不同。针对上述特点,hhadoopp平台开发通通用的资源管管理器yarrn,只负责责资源管理和和分配,即通通过把jobbtrackk中的资源管管理分配自和和并行应用程程序调度与控控制分离,从从而实现双层层调
45、度框架:由yarnn把资源分配配给各计算引引擎MASTTER,再由由MASTEER分配给各各个TASKK。资源管理器YYARN流程如下:1) cliient 通通过一个CLLC (coontainner laaunch conttext )向ResoourceMManageer提交一个个应用2)RM 启动动该应用的 ApliccationnMasteer。 ApplicattionMaaster启启动后先向RResourrceMannager注注册,并利用用心跳信息,定定期向RessourceeManagger报告自自己存活性和和资源分配请请求3)ResouurceMaanagerr分配一个c
46、contaiiner(ccontaiiner包括括CPU个数数和所需内存存数量)时, ApliccationnMasteer构造一个个CLC,并并在该conntaineer对应机器器上Nodeemanagger上启动动该conttainerr。ApliicatioonMastter 监控控该conttainerr的运行状态态,并且该资资源需要被回回收时,由AAplicaationMMasterr停止该coontainner。 监监控conttainerr内部的作业业的执行进度度是ApliicatioonMastter的职责责。4)一旦整个运运行完毕,AAM从RM中中解除注册,并并且干净退出出。
47、这种架构优点点是:优点一:减小了了JobTrrackerr(也就是现现在的RessourceeManagger)的资资源消耗,并并且让监测每每一个Jobb子任务(ttasks)状态的程序序分布式化了了,更安全、更更优美。也就就是AppllicatiionMasster是每每个应用一个个,并且不通通应用对应的的AppliicatioonMastter的实例例可以运行在在不同服务器器上。优点二:能够支支持不同的编编程模型AppplicaationMMasterr是一个可变变更的部分,用用户可以对不不同的编程模模型写自己的的AppliicatioonMastter,让更更多类型的编编程模型能够够跑在Haddoop集群群中。优点三:对于资资源的表示比比之前以剩余余slot数数目更合理。3) 存储层数据存储层主要要包括以下几几类:一类是基于MPPP数据库集集群,这类系系统特点是存存储层与上层层并型计算引引擎是紧耦合合,属于封闭闭性的系统。二是采用分布式式文件系统,例例如SharrK、Stiinger、HHIVE、IImpalaa、Scoppe等。Shhark、SStingeer、Hivve、Imaap