《大数据处理技术的总结与分析2.docx》由会员分享,可在线阅读,更多相关《大数据处理技术的总结与分析2.docx(72页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。数据分析处理需求分类1 事务型处理在我们实际生活中,事务型数据处理需求非经常见,例如:淘宝网站交易系统、12306 网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。这类系统数据处理特点包括以下几点:一是事务处理型操作都是细粒度操作,每次事务处理涉及数据量都很小。二是运算相对简洁,一般只有少数几步操作组成,比如修改某行的某列。三是事务型处理操作涉及数据的增、删、改、查,对事务完整性和数据一样性要求特别高。四是事务性操作都是实时交互式操作,至少能在几秒内执行完成。五是基于以上特点,索引是支撑事
2、务型处理一个特别重要的技术。在数据量和并发交易量不大情形下,一般依靠单机版关系型数据库, 例如 ORACL、EMYSQ、L SQLSERVE,R再加数据复制 DataGurad 、 RMAN、MySQL数据复制等 等高可用措施即可满意业务需求。在数据量和并发交易量增加情形下,一般可以采纳ORALCE RA集C 群方式或者是通过硬件升级 采纳小型机、大型机等,如银行系统、运营商计费系统、证卷系统 来支撑。事务型操作在淘宝、 12306 等互联网企业中,由于数据量大、拜访并发量高,必定采纳分布式技术来应对, 这样就带来了分布式事务处理问题,而分布式事务处理很难做到高效, 因此一般采纳依据业务应用特
3、点来开发专用的系统来解决本问题。2 数据统计分析数据统计主要是被各类企业通过分析自己的销售记录等企业日常的运营数据,以帮助企业治理层来进行运营决策。典型的使用场景有: 周报表、 月报表等固定时间供应应领导的各类统计报表。 市场营销部门, 通过各种维度组合进行统计分析, 以制定相应的营销策略等。数据统计分析特点包括以下几点:一是数据统计一般涉及大量数据的聚合运算,每次统计涉及数据量会比较大。二是数据统计分析运算相对复杂, 例如会涉及大量 goupby、子查询、嵌套查询、窗口函数、聚合函数、排序等。有些复杂统计可能需要编写 SQL脚本才能实现。三是数据统计分析实时性相对没有事务型操作要求高。 但除
4、固定报表外, 目前越来越多的用户期望能做做到交互式实时统计。传统的数据统计分析主要采纳基于MPP并行数据库的数据仓库技术。 主要采纳维度模型,通过预运算等方法, 把数据整理成适合统计分析的结构来实现高性能的数据统计分析, 以支持可以通过下钻和上卷操作,实现各种维度组合以及各种粒度的统计分析。另外目前在数据统计分析领域,为了满意交互式统计分析需求,基于内存运算的数据库仓库系统也成为一个进展趋势,例如SAP的 HANA平台。3 数据挖掘。1可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 1 页,共 36 页 - - - - - - -
5、- - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。数据挖掘主要是依据商业目标, 采纳数据挖掘算法自动从海量数据中发觉隐含在海量数据中的规律和学问。数据挖掘主要过程是: 依据分析挖掘目标, 从数据库中把数据提取出来,然后经过 ETL组织成适合分析挖掘算法使用宽表,然后利用数据挖掘软件进行挖掘。传统的数据挖掘软件,一般只能支持在单机上进行小规模数据处理, 受此限制传统数据分析挖掘一般会采纳抽样方式来削减数据分析规模。数据挖掘的运算复杂度和敏捷度远远超过前两类需求。一是由于数据挖掘问题开放性,导致数据挖掘会涉及大量衍
6、生变量运算,衍生变量多变导致数据预处理运算复杂性。 二是许多数据挖掘算法本身就比较复杂,运算量就很大, 特殊是大量机器学习算法,都是迭代运算,需要通过多次迭代来求最优解,例如K-means 聚类算法、 PageRank算法等。因此总体来讲,数据分析挖掘的特点是:1、数据挖掘的整个运算更复杂,一般是由多个步骤组成运算流,多个运算步骤之间存在数据交换,也就是会产生大量中间结果,难以用一条sql语句来表达。2、运算应当能够特别敏捷表达,许多需要利用高级语言编程实现。二 大数据背景下事务型处理系统相关技术在 google 、facebook 、taobao 等大互联网公司显现之后,这些公司注册和在线用
7、户数量都非长大, 因此该公司交易系统需要解决 “海量数据 +高并发 +数据一样性+高可用性”的问题。为明白决该问题, 从目前资料来看, 其实没有一个通用的解决方案,各大公司都会依据自己业务特点定制开发相应的系统, 但是常用的思路主要包括以下几点:(1) 数据库分片,结合业务和数据特点将数据分布在多台机器上。(2) 利用缓存等机制,尽量利用内存,解决高并发时遇到的随机IO 效率问题。(3) 结合数据复制等技术实现读写分别,以及提高系统可用性。(4) 大量采纳异步处理机制,对应高并发冲击。(5) 依据实际业务需求,尽量防止分布式事务。1 相关系统介绍1) 阿里 CORBA系R 统阿里 COBAR系
8、统是一个基于 MYSQL数据库的分布式数据库系统, 属于基于分布式数据库中间件的分布式数据库系统。该系统是前身是陈思儒开发的“变形虫” 系统 以前调研过 ,由于陈思儒离开阿里去了盛大,阿里当心“变形虫”稳固性等问题,重新开发该项目。该系统主要采纳数据库分片思路,实现了:数据拆分、读写分别、复制等功能。 由于此系统由于只需要满意事务型操作即可,因此相对真正并行数据库集群 例如 TeraData 等 ,此类系统供应操作没有也不需要供应一些复杂跨库处理,因此该系统存在以下限制:(1) 不支持跨库的 join、分页、排序、子查询。(2) insert等变更语句必需包括拆分字段等。(3) 应当不支持跨机
9、事务 以前变形虫不支持 。说白了此类系统不具备并行运算才能, 基本上相当于数据库路由器!另外此类系统的在实际应用的关键问题是,依据什么对数据进行切分, 由于切分不好会导致分布式的事务问题。2可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 2 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。2) 阿里 OceanBase系统该系统也是淘宝为明白决高并发、 大数据环境下事务型处理而定制开发的一个系统。该系统
10、主要思路和特点如下:(1) 他们发觉在实际生成环境中,每天更新的数据只占总体数据的1%不到,因此他们把数据分为:基线数据和增量更新数据。(2) 基线数据是静态数据,采纳分布式储备方式进行储备。(3) 只在一台服务器上储备和处理增量更新数据,并且是在内存中储备和处理更新数据。(4) 在系统负载轻的时候,把增量更新批量合并到基线数据中。(5) 数据拜访时同时拜访基线数据和增量更新数据并合并。因此这样好处是:(1) 读事务和写事务分别(2) 通过牺牲一点扩展性(写是一个单点),来防止分布式事务处理。说明: 该系统虽然能处理高并发的事务型处理,号称很牛逼,但其实也只是根据电商的事务处理来定制开发的专用
11、系统,个人认为其技术难度小于oracle等通用型的数据库 。该系统无法应用到银行或者12306 等,由于其事务处理的逻 辑远远比电商商品买卖处理规律复杂。在目前的大数据时代,肯定是基于应用定制才能找到好的解决方案!3) 基于 Hbase的交易系统在 hadoop 平台下,HBASE数据库是一个分布式KV数据库,属于实时数据库范畴。支付宝目前支付记录就是储备在HBASE数据库中。 HBASE数据库接口是非SQL接口,而是 KV操作接口 基于 Key 的拜访和基于key范畴的 scan 操作 ,因此 HBASE数据库虽然可扩展性特别好, 但是由于其接口限制导致该数据库能支持上层应用很窄。基于HBA
12、SE应用的设计中,关键点是key的设计,要依据需要支持的应用来设计key 的组成。可以认为 HBASE数据库只支持作为KEY的这一列的索引。虽然目前 HBASE有支持二级索引的方案,二级索引保护将会比较麻烦。2 并发和并行区分并发是指同时执行通常不相关的各种任务,例如交易型系统典型属于高并发系统。并行是通过将一个很大的运算任务,划分为多个小的运算任务, 然后多个小运算任务的并行执行,来缩短该运算任务运算时间。两者主要区分在于:(1) 通讯与和谐方面:在并行运算中,由于多个小任务同属一个大的运算任务,因此小任务之间存在依靠关系,小任务之间需要大量通讯和和谐。相反, 并发中的多个任务之间基本相互独
13、立,任务与任务之间相关性很小。3可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 3 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。(2) 容错处理方面:由于并发任务之间相互独立,某个任务执行失败并不会影响 其它的任务。 但是并行运算中的多个任务属于一个大任务,因此某个子任务的失败,假如不能复原 粗粒度容错与细粒度容错 ,就整个任务都会失败。3 本章总结数据量大不肯定需要并行运算,虽然数据量大, 数据是
14、分布储备, 但是假如每次操作基本上仍是针对少量数据,因此每次操作基本上都是在一台服务器上完成, 不涉及并行运算。 只是需要通过数据复制、 数据缓存、 异步处理等方式来支撑高并发拜访量三大数据背景下数据统计分析技术介绍随数据量变大, 和事务处理不同的是, 单个统计分析涉及数据量会特别大,单个统计分析任务涉及数据会分散在多台服务器上,且由于运算量大, 采纳单台服务器进行运算, 会导致运算时间特别长, 单个统计分析任务必需采纳并行运算方式来加快单个统计分析任务执行速度。1 并行查询与并行运算技术介绍在大数据背景下的数据统计分析技术门类许多,常见的有:n MPP并行数据库 : TeraData、Gre
15、enPlum、Vertica等。n基于 MapReduce并行运算框架的数据仓库: HIVEHadoop平台、Tenzing (Google 公司) n基于 Hbase 的 Phoenix 系统n HadoopDB系统n EMC公司的 hapt 系统n MPP分布式查询引擎:Dremel 、Impala 、Presto 、Shard query 、Citusdb 。n基于 SPARK的 Shark、基于 Dryad 的 SCOP、E 基于 Tez 的 stinger。n基于 hadoop+index 的 JethroData系统n基于内存运算的 Druid系统这些系统都解决了海量数据下的数据统
16、计分析的问题,并且这些系统另外一个共同特点是都供应了SQL或者类 SQL接口。为了能够较好争论这些系统, 我们需要对并行查询与并行运算的相关技术做一个简要的介绍。4可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 4 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。第一全部的系统都可以分为三个层次:语义层、并行运算引擎层、分布式储备层。语义层供应一个编程接口让用户表达所需要运算,并负责把该运算翻译成底层并
17、行运算引擎可以执行的执行方案,并由并行运算引擎来执行, 最下面一层是分布式储备层。对于供应类 SQL接口并行运算系统,语义层可以认为是SQL解析层。1) 语义层SQL语言是一种声名式语言,SQL只是表达了要做什么,而没有表达怎么做。为此, SQL解析层主要作用是:将用户提交的基于SQL的统计分析恳求,转化为底 层运算引擎层可以执行的执行方案。也就是解决“怎么做”的问题。SQL解析层工作主要包括两个大方面:(1) 通过语法分析技术来懂得要做什么。在关系数据库中, 一般会把 SQL语言分析后,形成树型结构的执行方案。(2) 在语法分析技术上, 利用各种优化技术和算法, 找出一种最经济物理执行方案。
18、5可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 5 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。优化可以分为两个方面:一是规律层面优化、二是物理执行层面优化。(1) 规律层优化规律层面个人认为主要是由于同样表达一个分析恳求, 有的人 SQL写的好,有的人 SQL写的烂,因此在规律层面可以通过一些等价关系代数变换, 实现查询重写, 将写的比较烂的 sql 变换为好的写法。比较典型优化是: “把投影和
19、过滤下沉,先执行过滤和投影操作”,削减中间结果。6可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 6 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。(2) 物理层优化物理层面优化是在规律优化后,结合实际物理执行过程, 找出最优的物理执行方案。生成物理查询方案的工作包括: 增加一些操作符:包括扫描和排序等。 确定各个操作符实现算法。例如扫描是全表扫描仍是利用索引。Join是采纳HASH连接、索引连接、合
20、并排序等实现算法中的那一种。 确定操作符之间的数据流转方法:物化仍是流水线方式。 采纳基于代价估算方法确定最优的物理执行方案,目前代价估算主要是以估算该物理方案需要的IO 量。另外对于并行数据库,就仍要考虑通讯代价,即尽量削减数据在各个机器之间的传递。在物理层优化的代价估算过程中,代价估算需要依靠许多统计信息,如表有多大,表中相关列的值分布是什么样子等。传统数据库在数据Load 过程中会事先运算好这些统计信息。并行运算中仍需要考虑通讯代价。需要指出是,由于imapla 、Presto 、HIVE 等系统只是一个查询引擎,它们可以直接查询以一般文件方式储备在HDFS系统上的文件,因此这些系统一般
21、无法使用索引和各种统计信息来进行物理执行方案的优化,这些系统一般只能在规律层进行一些基于规章静态优化。依据 SHARK论文, SHARK系统支持依据前面一些节点运算获得的信息,来动态优化后面执行方案。(3) 物化与流水线执行方法。7可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 7 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。一条 SQL语句对开发人员而言,感觉只是一次调用,但是实际上在数据库内部,
22、一条 SQL语句执行其实是有多个操作符组合而成的的树型结构运算流。如下图:针对该运算流有两种执行方式:一是基于物化或者是实体化执行方式,另外一种是基于数据流的执行方式。第一种方法的过程是:把各个操作运算排序,并把每个操作运算的输出的中间结果储备在磁盘上,直到被另外一个操作运算所读取。另外一种方法是同时交叉进行多个运算,由一个运算产生每个元组直接传递给下一个运算,而不将中间结果储备到磁盘,也不用等到前一个运算全部运算完毕。例如:两个表连接后,再进行投影操作。假如采纳第一种方法,就需要把两表连接中间结果暂时写入磁盘,然后再读取该结果执行投影操作。而假如采纳其次种方法, 就连接操作一旦产生一个元组就
23、可以马上送到投影操作去进行投影操作。流水线方法可以极大防止大量的中间结果磁盘IO。因此数据库一般会实行流水 线方法来执行。 流水执行方法有两种模式:一种是需求驱动流水线, 也就是从上层主动向下层要求元组, 另外一种是生产者驱动流水线执行方式,由低层主动产生元组,由下层向上层推。目前大部分数据库引擎采纳的是需求驱动流水线,实现方式采纳基于Graefe 提出的迭代器模型 。该模型把每个操作都表达为由三个接口:open,getnext,close。每个操作被调用open进行预备工作,然后通过反复迭代被调用 getnext来猎取下一个元组,最终被调用close 来进行清理工作。通过构建迭代器网络,也就
24、是迭代器之间的相互调用,就可以实现需求驱动流水线。8可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 8 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。当然不是任何操作都可以流水执行,流水执行条件是:操作要满意在接收输入元组时可以输出元组。 例如排序操作就无法进行流水操作,在执行排序操作前都必需进行实体化。(4) SQL 解析层与并行运算引擎层由于不同并行运算引擎层的执行方案表达不同,因此不同系统需要将
25、SQL解析成不同的形式物理执行方案,例如:MPP关系数据库一般是把SQL解析成 树状结构 的物理执行方案。HIVE、Tezning 数据库是把 SQL解析成 DAG结构的多个 MAPREDUC组E合。DRemel等就类似 MPP关系数据库,把SQL解析成一个树状结构执行方案。 微软 SCOPE就需要把类 SQL解析成 DAG结构的 Dryad 可执行的执行方案。SHARK就需要把 SQL解析成基于 scala 语言的 DAG结构执行方案。并发并行2) 并行运算引擎层(1) 并行运算形式并行化可以分为水平并行 无依靠并行 与垂直并行 流水线并行 两类。如下图:。9可编辑资料 - - - 欢迎下载
26、精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 9 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。假如两个操作 OP1、OP2 无相互依靠关系,就称这两个操作相互独立。水平并行化指的是相互独立的多个操作或者一个操作内相互独立的多个子操作分别由不同的处理机并行执行的形式。例如, 排序操作、 扫描操作由不同处理机并行执行就是水平并行化的实例。水平并行中一个非经常见的就是基于数据划分的并行,例如MAPREDU,CE就是通过将数据划分到多台
27、服务器上,并行执行MAP和 Reduce来进行并行运算。也有人把这种基于数据划分并行与操作独立并行区分开。垂直并行化就是指存在流水线方式依靠关系的操作分别由不同处理机并行执行 的形式。 流水线方式依靠:假如OP2无需等待 OP1执行完毕即可在另一处理机上开头执行 。由于一般情形下, 流水的级数远小于处理的数据条目,因此流水并行主要意义是在可以防止中间结果磁盘IO 操作,对并行度的奉献相对较小。(2) 并行运算面临的问题与并行运算框架并行运算需要解决的问题主要包括几下几个方面:自动并行化、通讯、任务调度、并发掌握、容错、资源治理。由于并行运算面对上述一系列问题,由于业界为了 简化并行程序开发,供
28、应了一系列的并行运算底层库或者框架。在高性能运算领域, 最常用于并行运算编程的库是MPI库,但是该库主要只是解决通讯问题。这导致容错、资源治理、任务调度、并行化等方面问题需要程序员 来解决,因此利用MPI 开发并行程序相对比较困难。最近一些年, 各大型互联网公司开发开发了一系列的通用并行运算框架。包括谷歌公司的 MAPREDUC框E架、微软公司的 Dryad 框架(目前微软已经停止该项目开发,转而支持 hadoop)、谷歌公司基于BSP模型的 Pregel 框架、 Twitter公司。10可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -
29、第 10 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。的 Storm 框架、 Yahoo公司 S4 框架、 HortonWorks 公司的 Tez 框架、 Berkeley高校的 spark 框架等通用并行运算框架。有了这些框架了, 程序开发时只需要编写串行执行程序即可,而且也不用考虑任务与任务之间的并发掌握以及通讯等问题,其它全部问题都有框架来解决,这样就大大简化并行程序开发难度。例如采纳MAPREDUC框E架,我们只需要供应MAP函数和 Reduce函数,
30、这些函数对程序员而言,都只是对本的数据操作。目前虽然并行运算框架许多,但是可以把它们分成几个大类 基于 BSP并行图运算引擎请参考第四章 :流数据并行运算框架Storm、S4是属于流数据并行运算框架,适合对流数据实时处理,也就是在数据写入磁盘前对数据进行实时并发运算。这类特点是运算不变,数据始终在变化。在上一个文档中,对此框架做过具体介绍,这里不再具体介绍。基于 DAG通用批处理并行运算框架MapReduc、e Tez、Dryad、Spark 等属于基于 DAG有向无环图 的通用批处理并行运算框架。这类框架是针对储备在储备设备上的一批数据进行分析处理,而且把分析处理流程利用DAG模型来表达。在
31、这些框架中 MAPREDUC是E最早显现的框架, 而后面显现的一系列框架都为了改进 MR框架不足而显现的升级版本。MR框架主要不足是两个方面:一是编程接口太简洁, 表现在单个 MAPREDUC无E法表达复杂运算, 所以在实际应用环境中都是通过多个MR作业组合来完成一个任务。 为了简化 MR作业组合, 在早期显现了一系列项目来执行组和式MR作业,例如 Cascading 项目。另外一个方面全部问题都必需转换为MAP和 REDUCE模式,导致程序编写比较麻烦。二是 MR只支持基于数据分区并行方式,不支持流水线并行,采纳是步步物化策略来提高牢靠性,当是这种导致大量中间结果物化,IO 开销特别大。因此
32、 Tez、Dryad、Spark 等后续框架改进主要针对以下两点进行改进:一是直接支持基于DAG结构表达方法, DAG使得用户能够特别清楚的写出特别复杂的业务规律。二是通过支持流水线并性方式或者是尽量将中间结果放内存等方式,解决中间结果物化导致的 IO 开销问题。 Dryad 和 Spark 框架在执行运算时,都会自动识别可以实行流水线方式执行的运算步骤,并尽量采纳流水线执行方式来执行。容错:由于支持流水线并行或者实行把中间结果放内存的方式,因此要必需考虑容错的问题。由于这些框架都采纳的是DAG结构, DAG中一个节点所代表运算的执行是不会对输入进行修改 所谓函数式编程 ,因此可以多次重复执行
33、不会影响运算。因此假如某个节点运算失败,它可以依据输入重复运算,而假如输入数据也消逝了,就让前一个节点重新运算。全部这一切都是由框架自动执行。当然需要指出的是对一些流水线执行的多个运算步骤,假如某个运算节点失败,就只能整个流水线整体失败。11可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 11 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结 OfRepresent the computations as a OAG of Communicating sequential pm
34、cessesIR osesexDAG dag = F1RVz DAG;Vertax map1 = naw VrtxMapProcessor.dass;Edge sdga1 = Edgemap1, reduca1. 5CATTER_GATHER,PERSISTED, 5IQUEN1AL, MOutput.class, Rlnpvt.cIa4;tdge edgeJ - kdgeIzin 7, edn ce 2. if1R_aAf h I R . PkWtblCU. bLtM kN1IAL,dag.addVertexmap1 addVertexmap2-adi arta: rexJutslI.add
35、”i/artfzs lr&ducs2-&do 7auhJ LIarlc dgo+dg t . arldtga Ledgeradc Edgoedg1. addtgu sg4.Simple DAG definition API12可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。基于 Tree 结构的 MPP并行查询引擎MPP并行数据库与 Dremel、impala 、Presto 、Shard query 、Citusdb都采纳的是基于 Tree 结构并行查询引擎。此类并行运算引擎共同特点是:一是针对 SQL专用并行运算引
36、擎, 只支持 SQL或者类 SQL语义。二是执行方案都是树状结构。三是以流水线或者将中间结果放入内存方式来实现快速运算。四是粗粒度容错机制。它们之间不同点:一 MPP并行数据库中并行查询引擎与底层储备是紧耦合的,导致假如采纳MPP 并行数据库, 就只能通过 SQL来拜访数据, 无法采纳其他运算引擎直接处理储备在数据库中的数据。二 Impala 、Presto都只是一个并行查询引擎,它们可以直接查询以文件方式存 储在 HDFS上的数据 , 这样同一份数据既可以利用这些引擎来实现交互式查询,也可以支持利用其他运算框架进行更深化分析。三 Dremel只支持 Google 自己的基于嵌套结构列式储备C
37、olumn IO 。该引擎也主要适合于聚合型运算,不支持join操作。四 上述引擎中只有MPP并行数据库可以利用索引以及各种统计信息来优化物理 执行过程,因此该系统执行效率应当是最高。五 Dremel 、impala 都只适合 中间结果越来越小 的查询,由于这些系统都是把中间结果放在内存, 一旦某个中间节点输出结果超过内存,就整个任务会失败, 例如大表之间 Join 。六 shard query和 citusdb都是在单机版本关系数据库基础上,采纳增加一层中间件方式来支持并行查询。n 基于 Tree 并行运算引擎与基于DAG并行运算引擎本质区分基于 Tree 结构并行运算引擎与基于DAG并行运
38、算引擎从表面上看,它们之间的主要区分是在于语义层面:前者主要专用与SQL类,而后者更通用。13可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选 - - - - - - - - - -第 13 页,共 36 页 - - - - - - - - - -可编辑资料 - - - 欢迎下载精品名师归纳总结资料word 精心总结归纳 - - - - - - - - - - - -。但是 MPP并行关系数据库引擎、 Imapla 等都会支持通过UDF来扩展和解决标准SQL语言表达才能,另外SQL语言本身可以通过嵌套查询、子查询、union 等各种方法表达很复杂的运算过程, 因此从语义表达层
39、面来讲他们之间不存在本质区分。这两者之间主要区分仍是在于表达执行方案结构方面:树结构是一个逐步汇聚的一个运算过程, 无法表达 split结构, 因此基于 DAG表达结构更敏捷和通用。 个人认为:树型结构可能更加适合采纳迭代器模型来实现流水线式的操作 只有树结构才有上下层的关系,因此便利实现上层操作符嵌套调用下层操作符 。所以不是全部运算都可以通过一个复杂SQL语句来表达!(5) 自动并行化、数据重分布、本的调度并行运算引擎最重要的一个职责是自动并行。 依据前面的并行运算基础学问, 并行运算的形式主要包括: 基于数据划分水平并行、 基于流水线垂直并行、 基于无依靠水平并行三种方式。大数据属于数据
40、密集型运算, 数据数量远远超过运算步骤数量。 因此基于数据划分并行 方式是最有效的一种并行运算方法。 在整个并行运算过程中, 基于数据划分中涉及数据可以分为两大类:原始数据与中间结果数据。n 原始数据划分以及SN、SD架构争论原始数据就可能存在两种情形:一是在Shared-nothing架构中,原始数据本身就已经划分好了,例如HDFS或者 SN架构 MPP数据库。另外一种情形如 shared-disk结构中,原始数据没有划分。第一种情形下针对原始数据划分并行运算,就要受该划分的限制。例如在MAPREDUC中E,map输入是储备在 HDFS上的数据文件, 因此 MAP实例个数一是不能少于该数据文
41、件分片数, 二是 MAP实例最好运行在该数据文件所在机器,也就是要求任务调度时,能把该任务调度到特定机器上,即所谓“本的调度”,将计 算尽量移动到数据。其次种情形下, 由于全部运算节点都可以看到全部数据,因此此时可以依据运算特点敏捷挑选:数据划分粒度、并行度、参加运算的节点。例如在ORALCE并性机制中, ORALC可E 以针对某张表,按block或者 partition为单位进行划分。依据上述分析我们可以发觉SD架构相对 SN架构,在针对原始数据第一级并性运算时, SD架构更敏捷, SN架构面临的一个缺陷就是假如原始数据分布不均衡, 就存在运算倾斜问题。但是现在大部分大的数据库厂商的MPP数据库仍是采纳了SN架构。依据网上所查资料来看 , 主要缘由有两点:一是 SD架构下,磁盘是一个共享资源, 运算节点越多磁盘争抢概率越大 和 RAID随机 IO 冲突道理一样 ,导致该架构可扩展性不够好, 也就是可能运算节点越多, 效率相反不会提高。二是从缓存角度来看, SD架构下每个机器缓存都要面对全数据库,会导致命中概率底下。目前 ORACLE-RA开C发一个 fusioncache 技术,实现了一个全局共享缓存来解决上述问题,但是可想而知这会影响系统可扩展性。14可编辑资料 - - - 欢迎下载精品名师归纳总结学习资料 名师精选