什么是MPP?
MPP (Massively Parallel Processing),即大规模并行处理。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似)。
MPP数据库是一款 Shared Nothing架构的分布式并行结构化数据库集群,具备高性能、高可用、高扩展特性,可以为超大规模数据管理提供高性价比的通用计算平台,并广泛地用于支撑各类数据仓库系统、BI 系统和决策支持系统
并行处理:
在数据库集群中,首先每个节点都有独立的磁盘存储系统和内存系统,其次业务数据根据数据库模型和应用特点划分到各个节点上,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
大规模:
每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。整个集群称为非共享数据库集群,非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。
架构特性
MPP 具备以下技术特征:
1) 相对低的硬件成本:完全使用 x86 架构的 PC Server,不需要昂贵的 Unix 服务器和磁盘阵列;
2) 集群架构与部署:完全并行的 MPP + Shared Nothing 的分布式架构,采用 Non-Master 部署,节点对等的扁平结构;
3) 海量数据分布压缩存储:可处理 PB 级别以上的结构化数据,采用 hash分布、random 存储策略进行数据存储;同时采用先进的压缩算法,减少存储数据所需的空间,可以将所用空间减少 1~20 倍,并相应地提高 I/O 性能;
4) 数据加载高效性:基于策略的数据加载模式,集群整体加载速度可达2TB/h;
5) 高扩展、高可靠:支持集群节点的扩容和缩容,支持全量、增量的备份/恢复;
6) 高可用、易维护:数据通过副本提供冗余保护,自动故障探测和管理,自动同步元数据和业务数据。提供图形化工具,以简化管理员对数据库的管理工作;
7) 高并发:读写不互斥,支持数据的边加载边查询,单个节点并发能力大于 300 用户;
8) 行列混合存储:提供行列混合存储方案,从而提高了列存数据库特殊查询场景的查询响应耗时;
9) 标准化:支持SQL92 标准,支持 C API、ODBC、JDBC、ADO.NET 等接口规范。
MPP的优缺点
MPP解决了单个SQL数据库不能存放海量数据的问题,但是也存在一些问题,例如:
当节点数达到100左右时,MPP有些仍会遇到SQScalability的问题,速度变慢,或者不稳定。
当增加或者删除节点的时候,需要的维护工作仍然比较大,集群会遇到数据迁移和重新平衡的问题
MPP数据库适合存储高密度价值数据,并且是长期存储和多次使用,所以MPP并行数据库会花大量的精力在Load阶段,把数据处理成适合分析格式。带来的优点就是从查询速度快,通常在秒级甚至毫秒级以内就可以返回查询结果。缺点是不支持细粒度的容错。
Hadoop与MPP的区别:
1.底层数据库:
MPP跑的是SQL,而Hadoop底层处理是MapReduce程序。
SQL on Hadoop是利用Hadoop平台存储数据,在其之上实现SQL查询引擎。最大的特点和Scalability非常好,可以支持超过1000个节点的集群。但是由于Hadoop的特点,很多查询还是需要做大量的数据扫描操作,因此查询速度往往比MPP要慢,而且支持的同时并发查询数一般也比较低。
2.扩展程度
MPP虽然是宣称可以横向扩展Scale OUT,但是这种扩展一般是扩展到100左右,而Hadoop一般可以扩展1000+。
综合而言,Hadoop和MPP两种技术的特定和适用场景为:
Hadoop在处理非结构化和半结构化数据上具备优势,尤其适合海量数据批处理等应用要求。
MPP适合替代现有关系数据机构下的大数据处理,具有较高的效率。
MPP适合多维度数据自助分析、数据集市等;Hadoop适合海量数据存储查询、批量数据ETL、非机构化数据分析(日志分析、文本分析)等。
MPP与Hadoop的选择
对于用户来说,在实际的使用场景中,如果数据扩展需求不是特别大,需要的处理节点不多,数据都是结构化的数据,习惯使用传统的RDBMS的很多特性的场景,可以考虑MPP,例如Greenplum/Gbase等
但是如果有很多非结构化数据,或者数据量巨大,有需要扩展到成百上千个数据节点需求的,这个时候Hadoop是更好的选择。
样例产品
MPP
GreenPlum,Presto等
elasticsearch
SQL on Hadoop
Hive,Spark等