一、MMP数据库

MPP是massively parallel processing,一般指使用多个SQL数据库节点搭建的数据仓库系统。执行查询的时候,查询可以分散到多个SQL数据库节点上执行,然后汇总返回给用户。MPP解决了单个SQL数据库不能存放海量数据的问题,但是也存在一些问题,例如:当节点数达到100左右的时候,MPP有些仍会遇到Scalability的问题,速度变慢,或者不稳定。而且,当增加或者删除节点的时候,需要的维护工作仍然比较大,集群会遇到数据迁移和重新平衡的问题。SQL on Hadoop是利用Hadoop平台存储数据,在其之上实现SQL查询引擎。最大的特点和Scalability非常好,可以支持超过1000各节点的集群。但是由于Hadoop的特点,很多查询还是需要做大量的数据扫描操作,因此查询速度往往比MPP要慢,而且支持的同时并发查询数一般也比较低。

二、MPP原理

MPP原理朴素上说就是分治思想,均分task。然后每个worker/segment上做的都是同样的sub-task,pipeline方式执行,理想情况下性能是非常优异的。但是很容易受到慢worker(它是最长路径)和interconnect的影响,所以scalability不佳,集群规模在十几个节点后就没有性能提升了(甚至还可能下降)。HADOOP原理更类似batch processing,更细粒度切分task,worker能者多劳(每个worker上执行的任务可以是不平均,不一致的)。单独worker看,性能不及MPP,但是胜在scalability优异,几百个节点是没问题的,在集群性上远胜MPP。另外从业务上看,传统企业数据量有限,所以更倾向于full-sql支持的MPP方案。而互联网企业更乐于用hadoop来处理更大规模的数据。近几年来二者是互相融合学习的(MPP提升scalability,hadoop提升sql的支持),所以今后二者的区别应该会越来越模糊,最后可能诞生一个大一统OLAP方案(甚至再融合OLTP)。

三、MPP数据库对比SQL On Hadoop

因为一些SQL On Hadoop系统例如Impala也被称为MPP架构。这里是正统的MPP数据库对比SQL On Hadoop。那么对比两边其实是诸如Vertica,阿里ADS,GreenPlum,Redshift vs Impala,Hive以及SparkSQL,Presto等。这两者很大程度上的差异其实在于,对存储的控制。
对于Hadoop而言,数据最常见的存在形式是数据湖,也就是数据本身未经很多整理,数据倾向于读取的时候再解析,而且多个系统处理不同的workload一起共享同一套数据湖。例如你可以用Spark,MR以及Impala读取Hive的数据,甚至直接读取HDFS上的Parquet,ORC文件。这份数据可以用来做BI数仓也可以用来做ML模型训练等等。
而MPP数据库则相反,MPP为了速度,需要将数据导入做一定处理,整理成优化的格式以便加速。这样做的后果就是,它们的存储类似一个黑盒,数据进去之后很难被别的系统直接读取。当然Vertica之类的系统也有SQL On Hadoop的运行模式,但是速度会有所下降,看过Vertica的Benchmark,对比Impala在Hadoop模式下,并不是有多大的优势,甚至有部分查询更慢。这部分性能损失,就是抛开黑盒存储所带来的差异。
另外SQL On Hadoop产品和MPP数据库的很多差异,其实是工程上成熟度的差异。例如CBO这样的优化,可能在数据库领域已经非常常见,但是对SQL On Hadoop还可以说是个新鲜玩意,至少2016-08-30为止,SparkSQL和Presto还没有CBO。而列存的引入也是近些年的事情,相对Vertica应该是从诞生就使用了列存。这些差异很可能会很快被补上。而底层存储部分,随着Parquet ORC这样相对复杂,借用了不少传统数据库领域经验的格式不断优化,也许今后SQL On Hadoop会和MPP数据库越来越近似。

参考文献:

  1. https://www.zhihu.com/question/27589901/answer/119759349
  2. https://www.zhihu.com/question/27589901/answer/52136396
  3. https://www.zhihu.com/question/27589901/answer/145205267

MPP调研的更多相关文章

  1. Postgresql-xl 调研

    Postgresql-xl 调研 来历 这个项目的背后是一家叫做stormDB的公司.整个代买基于postgres-xc.开源版本应该是stormdb的一个分支. In 2010, NTT's Ope ...

  2. SQL on Hadoop中用到的主要技术——MPP vs Runtime Framework

    转载声明 本文转载自盘点SQL on Hadoop中用到的主要技术,个人觉得该文章对于诸如Impala这样的MPP架构的SQL引擎和Runtime Framework架构的Hive/Spark SQL ...

  3. Apache Drill 调研学习

    Apache Drill 调研学习 ## 一.Drill概述 在大数据时代,对于Hadoop中的信息,越来越多的用户需要能够获得快速且互动的分析方法.大数据面临的一个很大的问题是大多数分析查询都很缓慢 ...

  4. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  5. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  6. asp.net 读取导入的project(mpp)文件

    公司项目有用到读取project文件(.mpp)并保存到指定数据库类似的功能. 查了一下大家总结的方法. 找到一哥们代码,初步判断可行,特此收藏. using System.IO; using Mic ...

  7. SMP、NUMA、MPP(Teradata)体系结构介绍

    从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform ...

  8. 《Kafka Stream》调研:一种轻量级流计算模式

    原文链接:https://yq.aliyun.com/articles/58382 摘要: 流计算,已经有Storm.Spark,Samza,包括最近新起的Flink,Kafka为什么再自己做一套流计 ...

  9. OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想

    一点调研资料,比较浅,只是觉得部分内容比较有用,记在这里: 首先,关于云计算,要理解什么是SAAS.PAAS.IAAS,这里不述:关于虚拟化,需要知道什么是Hypervisor,这里也不述: Open ...

随机推荐

  1. centos 开机执行的命令

    centos开机执行的命令-------待验证,因为有可能涉及到root问题,没想明白怎么输入密码 1.增加rc.local可执行权限 chmod +x /etc/rc.d/rc.local 2.在里 ...

  2. 微软发布Azure Stack第一个技术预览版

    为了提升商业灵敏度和加快创新步伐,各个企业都在迅速地转向云服务.在微软,我们已经见到微软智能云Azure的飞速发展和使用,每月我们都有近十万的新增订阅量.然而,我们也了解到还有很多企业在完全移到公有云 ...

  3. javascript小练手

    1.做一个小图标在界面中通过按钮可以变大 变小 变色 变圆 <!DOCTYPE html> <html lang="en"> <head> &l ...

  4. Tomcat启动阻塞变慢

    Tomcat 熵池阻塞变慢详解 Tomcat 启动很慢,且日志上无任何错误,在日志中查看到如下信息: Log4j:[2015-10-29 15:47:11] INFO ReadProperty:172 ...

  5. php简单的数组递归

    参照 http://www.oschina.net/code/snippet_105637_11401  的例子   $arr = array('aa' =>  array('bb' => ...

  6. 「C语言」在Windows平台搭建C语言开发环境的多种方式

    新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于  Windows 平台搭建C语言集成开发环境 ...

  7. NO.012-2018.02.17《题都城南庄》唐代:崔护

    题都城南庄_古诗文网 题都城南庄 唐代:崔护 去年今日此门中,人面桃花相映红.去年春天,就在这扇门里,姑娘脸庞,相映鲜艳桃花.人面:指姑娘的脸.第三句中“人面”指代姑娘. 人面不知何处去,桃花依旧笑春 ...

  8. (一)安装Linux时的磁盘划分

    Linux安装中的磁盘划分 安装Ctentos6.3的版本,它使用的默认文件系统类型是ext4. Linux的安装至少要划分为根分区/和swap分区这个两个分区才能正常安装使用. 一般来说应该分为四个 ...

  9. 在Ubuntu搭建网站环境问题记录

    1. 安装apache2 遇到如下问题 root@louis:~# apt-get install apache2Reading package lists... DoneBuilding depen ...

  10. C# 面向对象之多态

    //多态:让一个对象表现的多种状态 //实现:子类重写父类的虚方法 Person person = new Person(); Chinese chinese = new Chinese(); Ame ...