一、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. ubuntu配置(娱乐工作)

    因为目前没有使用ubuntu作为工作的电脑(mac还是好用),所以暂时记录一下别人分享的ubuntu常用软件: 输入法:搜狗输入法 虚拟机:virtualbox 浏览器:chromium ide:id ...

  2. mongodb 3.4 YUM安装

    1:配置yum源vi /etc/yum.repos.d/mongodb-org-3.4.repo加入以下内容: [mongodb-org-3.4] name=MongoDB Repository ba ...

  3. Hyper-V迁移---委派

    在Hyper-V管理器中-实时迁移,选择“使用kerberos",如图1所示 在AD中,找到Hyper-V宿主,分别设置委派,如图2所示    图1               图2

  4. Zabbix监控mysql主从状态并实现报警

    一.环境需求 主机A: zabbix-server 主机B: zabbix-agent/mysql从 二.主机B操作 1.添加监控脚本 vim /data/zabbix/mysql_slave_che ...

  5. June 28th 2017 Week 26th Wednesday

    Anger begins with folly, and ends in repentance. 愤怒以愚蠢开始,以后悔告终. Learn to control your temper, don't ...

  6. Android Studio 独立引入(非友盟)微博分享和回调时问题

    最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...

  7. 事件总线(Event Bus)

    事件总线(Event Bus)知多少 源码路径:Github-EventBus简书同步链接 1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对 ...

  8. std::unique实现

    std::unique适用于将排过序的数据结构重复的部分全部放在结尾 但用的时候发现会将原先容器中的内容改掉,看了源码发现这个函数会将不重复的数据结构直接覆盖到前一个重复的位置上,下面看源码 该函数s ...

  9. 关于项目中的DAL数据接入层架构设计

    摘要:项目中对关系型数据库的接入再寻常不过,也有海量的ORM工具可供选择,一个一般性的DAL数据接入层的结构却大同小异,这里就分享一下使用Hibernate.Spring.Hessian这三大工具对D ...

  10. 「bzoj4264 小C找朋友」

    权限题 就是一个集合\(hash\) 集合\(hash\)可以用于判断两个集合是否相等,具体做法就是给每个随机一个值,之后异或起来就是可以了 这个题就是这样,处理出每个点直接相连的点集的\(hash\ ...