MPP:大规模并行处理(massively parallel processing)
1、MPP架构基本概念
1.1、什么是MPP
MPP
,全称为Massively Parallel Processor
,翻译过来就是大规模并行处理
。MPP系统是由许多松耦合
的处理单元组成的(要注意的是这里指的是处理单元而不是处理器)。每个处理单元内的CPU都有自己私有的资源,如总线,内存,硬盘等,且都有操作系统和管理数据库的实例副本。这种结构最大的特点在于不共享资源(share-nothing)。
1.2、MPP架构特点
MPP架构有如下特点:
1)Share Nothing、节点之间数据不共享,只有通过网络连接实现的协同。
2)每个节点有独立的存储和内存。
3)数据根据某种规则(如Hash)散布到各个节点。
4)计算任务也是会发布到各个节点并行执行,最后再将结果聚合到整体返回。
5)用户使用时会看做整体。
6)MPP数据库(如GreePlum)往往优先考虑C
一致性,然后是A
可用性,最后考虑P
分区容忍。
7)MPP架构目前被并行数据库广泛采用,一般通过scan、sort和merge等操作符实时返回查询结果
1.3、MPP架构劣势
1)很难高可用 -> 影响可用性和可靠性
因为数据按某种规则如HASH已经散布到了各个节点上。
2)节点数=任务并行数 -> 影响扩展性
一个作业提交时,每个节点都要执行相同任务。而不像MapReduce那样做了根据实际开销进行任务拆分后散发到有资源的几个节点上。这一点大大影响了MPP架构应用的可扩展性。
3)每个客户端同时连接所有节点通信 -> 影响网络
MPP架构每个节点独立,所以客户端往往需要连接所有节点进行通信,这使得网络也成为瓶颈。
4)分区容错性差
前面提到过MPP主要考虑CA,最次才是P。那么一旦扩展节点太多后,元数据管理十分困难。
1.4、MPP 适用场景
1)集群规模100以内、并发小(50以下)。
2)MPP架构目前被并行数据库广泛采用,一般通过scan
、sort
和merge
等操作符实时返回查询结果。
2、典型的MPP架构应用
2.1、GreenPlum
Greenplum。该公司成立于2003年,2006年推出了首款产品,其主营业务关注在数据仓库和商业智能方面,Greenplum DW/BI软件可以在虚拟化x86服务器上运行无分享(shared-nothing)的大规模并行处理(MPP)架构。
Master-Slave架构的MPP
可以参考这篇文章:大数据系统的另一种解决方案-采用MPP架构的GreenPlum数据库
2.2、HP Vertica
Vertica是一款基于列存储的MPP (massively parallel processing)架构的数据库。它可以支持存放多至PB(Petabyte)级别的结构化数据。Vertica是由关系数据库大师Michael Stonebraker(2014 年图灵奖获得者)所创建,于2011年被惠普收购并成为其核心大数据平台软件。
无共享架构的MPP,特点如下
1)无特殊节点
2)所有节点对等
3)可通过任意节点查询或加载数据
4)实时加载与查询同步进行
2.3、Impala
Impala是Cloudera(云纪元)公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。
3、其他架构
3.1、SMP
3.1.1、什么是SMP
SMP
全称为Symmetric Multi Processing
,翻译过来是对称多处理
。其最大的特点是所有CPU共享所有资源,如内存、IO等。操作系统只有一个,他管理着一个队列,每个处理器依次处理队列中的进程。如果两个处理器同时请求访问一个资源(例如同一段内存地址),由硬件、软件的锁机制去解决资源争用问题。
所谓对称多处理器
结构,是指服务器中多个 CPU 对称工作,无主次或从属关系。各 CPU 共享相同的物理内存,每个 CPU 访问内存中的任何地址所需时间是相同的,因此 SMP 也被称为一致存储器访问结构 (UMA : Uniform Memory Access) 。对 SMP 服务器进行扩展的方式包括增加内存、使用更快的 CPU 、增加 CPU 、扩充 I/O( 槽口数与总线数 ) 以及添加更多的外部设备 ( 通常是磁盘存储 ) 。
3.1.2、SMP的问题
SMP 服务器的主要特征是共享,系统中所有资源 (CPU 、内存、 I/O 等 ) 都是共享的。也正是由于这种特征,导致了 SMP 服务器的主要问题,那就是它的扩展能力非常有限。
对于 SMP 服务器而言,每一个共享的环节都可能造成 SMP 服务器扩展时的瓶颈,而最受限制的则是内存。由于每个 CPU 必须通过相同的内存总线访问相同的内存资源,因此随着 CPU 数量的增加,内存访问冲突将迅速增加,最终会造成 CPU 资源的浪费,使 CPU 性能的有效性大大降低。
实验证明, SMP 服务器 CPU 利用率最好的情况是 2 至 4 个 CPU 。
3.1.3、适用场景
1)当节点之间通信交互较少时,MPP更适用。集中式数据库SMP更适用。
2)MPP架构服务器就是由多个SMP服务器通过若干节点组成,通过网络协同工作。
3.2、NUMA
3.2.1、什么是NUMA
NUMA
全称为Non-Uniform Memory Access
,即非一致性存储访问架构。
由于SMP扩展能力差,而 NUMA可以有效地扩展从而构建大型系统。利用 NUMA ,可以把几十个 CPU( 甚至上百个 CPU) 组合在一个服务器内。其 CPU 模块结构如图所示:
3.2.2 NUMA特点
NUMA 服务器的基本特征:
1)具有多个 CPU 模块。
2)每个 CPU 模块又是由多个 CPU( 如 4 个 ) 组成,并且具有独立的本地内存、 I/O slot等。
3)节点之间通过互联模块 ( 如称为 Crossbar Switch) 进行通信交互,每个 CPU 可以访问整个系统的内存 ( NUMA 与 MPP 的重要差别,因为MPP中CPU不可访问其他节点内存 )。
显然,访问本地内存的速度将远远高于访问其他节点上的内存的速度,这也是非一致存储访问 NUMA 的由来。由于这个特点,为了更好地发挥系统性能,开发应用程序时需要尽量减少不同 CPU 模块之间的信息交互。
利用 NUMA 技术,可以较好地解决原来 SMP 系统的扩展问题,在一个物理节点内可以支持上百个 CPU 。
3.2.3 NUMA的问题
但 NUMA 技术同样有一定缺陷,由于访问其他节点上的内存的延时远远超过本地内存,因此当 CPU 数量增加时,系统性能无法线性增加。
如 HP 公司发布 Superdome 服务器时,曾公布了它与 HP 其它 UNIX 服务器的相对性能值,结果发现, 64 路 CPU 的 Superdome (NUMA 结构 ) 的相对性能值是 20 ,而 8 路 N4000( 共享的 SMP 结构 ) 的相对性能值是 6.3 。从这个结果可以看到, 8 倍数量的 CPU 换来的只是 3 倍性能的提升。
3.2.4 NUMA例子
比较典型的 NUMA 服务器的例子包括 HP 的 Superdome 、 SUN15K 、 IBMp690 等。
3.2.5 NUMA和MPP比较
- 它们都由多个节点组成。
- 每个节点都具有自己的 CPU 、内存、 I/O。
- 节点之间都可以通过节点互联机制进行信息交互。
2.1)节点互联机制不同
- NUMA 的节点互联机制是在同一个物理服务器内部实现的。当某个 CPU 需要进行同模块其他节点内存访问时,它必须等待,这也是 NUMA 服务器无法实现 CPU 增加时性能线性扩展的主要原因。
- 而 MPP 的节点互联机制是在不同的 SMP 服务器外部通过 I/O 实现的,每个节点只访问本地内存和存储,节点之间的信息交互与节点本身的处理是并行进行的。因此 MPP 在增加节点时性能基本上可以实现线性扩展。
2.2)内存访问机制不同
- 在 NUMA 服务器内部,任何一个 CPU 可以访问整个系统的内存,但非本节点内存访问的性能远远低于本节点内存访问,因此在开发应用程序时应该尽量非本节点内存访问。
- 在 MPP 服务器中,每个节点只访问本地内存,不存在远地内存访问的问题。
3.2.6 适用场景
NUMA不适合大量数据需要处理且有交互的场景。
3.3、Hadoop
1)数据存储sharding(分片,分表)技术不同
MPP一般用hash切分,很难resharding导致扩展困难,采用这种方式切分的一般上百台性能达到瓶颈,每次增加节点需要reshard;Hadoop用元数据服务(NameNode)统一管理,数据的分区逻辑和分区的存储逻辑分离了,数据的写入和读取都是通过查询元数据服务得到数据分区的具体节点位置,也会受限于元数据服务能力,一般上限10K。
2)内存管理
MPP内存管理精细,就像每个节点有个小数据库,数据量小时延时低,但数据量太大吞吐就达到瓶颈了;Hive内存管理粗放,scan+batch所以吞吐量大,但延时高
3)数据管理理念不同(以下转自为什么说HADOOP扩展性优于MPP架构的关系型数据库?,作者 王涛)
4)解决data locality(数据局部性)时机不同
hadoop为计算时,MPP为数据加载时,所以HADOOP更易扩展
5)事务和数据模型处理不同(以下转自为什么说HADOOP扩展性优于MPP架构的关系型数据库?,作者:黄东旭)
MPP数据库属于关系型数据库,一个完整的关系模型分散到多台物理节点上去做管理,因此对于DML操作、强事务型操作,MPP数据库压力很大,规模上来以后,DML操作的性能基本无法接受,而对于DQL操作,就没有太大影响,因为数据相对不动,因此无修改数据,对于数据模型的维护来讲,成本非常小。所以说,对于MPP分析类的数据库(只查询),扩展性影响不大。而相反,事务型MPP数据库,扩展性就很差了。Hadoop是非关系型数据库,不涉及太多的数据模型维护工作,因此扩展性很高。
6)failover(故障转移)机制
MR将任务合理拆分成小任务,根据计算节点资源情况下发任务执行。
HDFS将数据拆分为Block为单位存储到多个DataNode,且有N个副本,NameNode知道所有Block所在位置。
- 当数据基本是结构化且需要使用MPP数据库的RDBMS特性时可考虑使用MPP数据库;MPP更适合多维度数据分析、数据集市等
- 而非结构化和半结构化数据或数据量巨大需要海量扩展节点或是需要使用一些基于HDFS的一些技术栈的时候就用Hadoop这套。
综合Hadoop MPPDB和传统RDBMS的对比如下:
由上述对比可预见未来大数据存储与处理趋势:
1)MPPDB+Hadoop混搭使用,用MPP处理PB级别的、高质量的结构化数据,同时为应用提供丰富的SQL和事物支持能力;
2)用Hadoop实现半结构化、非结构化数据处理。
3)这样可以同时满足结构化、半结构化和非结构化数据的高效处理需求。
3.4 集群和MPP区别(未完成)
1)集群中,每个机器节点都拥有独立内存、内盘等,内部使用网络来达到内部互联的目的。集群由程序员决定怎么分配工作。
2)简单理解MPP即这样的系统由多个物理上独立的节点通过高速网络互联组成的一个相互协同工作的大规模系统,从用户角度来看,用户的任务将会被透明的分割到多个节点计算,由协调节点聚合并返回结果。
4、参考文档
What is the difference between a Cluster and MPP supercomputer architecture?
转自:MPP架构-CSDN博客
一、MPP简介
MPP (Massively Parallel Processing),即大规模并行处理,将任务并行的分散到多个服务器和节点上,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果(与Hadoop相似),每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。
1)MPP本质上是基于数据库的集群架构,基于数据库并区别于传统单节点数据库,支持多节点分布式存储和计算。(值得一提的是并不是所有的数据库集群方案都是基于分布式存储的)
2)MPP应该是多用作数据仓库,支撑查询和分析类应用场景。(个人理解)。
3、用关系型数据库(例如PostgreSQL),搭建一个分布式存储和计算的多节点集群,就基本形成了一个MPP数据库系统。
二、数据库非共享集群、数据库共享集群
MPP属于数据库非共享集群,故在此对数据库非共享集群、数据库共享集群进行简单区分,便于理解。
1、数据库非共享集群
在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。
2、数据库共享集群
Data Shared Cluster 数据共享集群,简称DSC,是并行集群,位于不同服务器系统的DM实例同时访问同一个数据库,节点之间通过私有网络进行通信,所有的控制文件、联机日志和数据文件存放在共享的设备上,能够被集群中的所有节点同时访问。
DSC的优点主要在于高可用和负载均衡,一台机器宕机不影响应用访问数据库。
传统的单节点不属于集群,双机热备或Oracle RAC等,均是基于共享存储的。
Oracle RAC集群架构图:
三、MPP架构
1、MPP架构特征
基于MPP架构,数据库支持大规模任务并行执行。
基于MPP架构,每个节点都有独立的磁盘存储系统和内存系统。
基于MPP架构,分布式数据存储场景,每个节点都有独立的磁盘存储系统,可以本地化存储数据。
基于MPP架构,分布式数据存储场景,每个节点都有独立的内存系统,数据在各节点上完成计算后再存入各节点的物理磁盘。
基于MPP架构,各个节点独立,故便于横向拓展。
shared noting(SN)是一种分布式计算架构。这这种架构中,每一个节点都是独立的,自给的,在系统中不存在单点竞争。更明确地说,没有节点共享存储和硬盘。人们通常将SN和大量保存中央存储状态信息的系统进行对比,无论是在数据库,应用服务器或者是其他相似的单点竞争。
SN相对中央控制架构有很大的优点。SN可以避免单点故障,拥有自我恢复能力,并且在不破坏原有系统的情况下进行升级。
2、MPP部署架构
MPP部署架构是由多个SMP(对称多处理器结构,Symmetrical Multi-Processing)服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个SMP服务器(每个SMP服务器称节点)通过节点互联网络连接而成,每个节点只访问自己的本地资源(内存、存储等),是一种完全无共享(Share Nothing)结构,因而扩展能力最好,理论上其扩展无限制。
四、MPP数据库
1、MPPDB简介
MPPDB是一款 Shared Nothing 架构的分布式并行结构化数据库集群,具备高性能、高可用、高扩展特性,可以为超大规模数据管理提供高性价比的通用计算平台,并广泛地用于支撑各类数据仓库系统、BI 系统和决策支持系统。
2、MPPDB架构
MPPDB 采用完全并行的MPP + Shared Nothing 的分布式扁平架构,这种架构中的每一个节点(node)都是独立的、自给的、节点之间对等,而且整个系统中不存在单点瓶颈,具有非常强的扩展性。
3、MPPDB特征
完全使用 x86 架构的 PC Server,不需要昂贵的 Unix 服务器和磁盘阵列。
完全并行的 MPP + Shared Nothing 的分布式架构,采用 Non-Master 部署,节点对等的扁平结构。
可处理 PB 级别以上的结构化数据,采用 hash分布、random 存储策略进行数据存储;同时采用先进的压缩算法,减少存储数据所需的空间,可以将所用空间减少 1~20 倍,并相应地提高 I/O 性能;
基于策略的数据加载模式,集群整体加载速度可达2TB/h。
支持集群节点的扩容和缩容,支持全量、增量的备份/恢复。
数据通过副本提供冗余保护,自动故障探测和管理,自动同步元数据和业务数据。提供图形化工具,以简化管理员对数据库的管理工作。
读写不互斥,支持数据的边加载边查询,单个节点并发能力大于 300 用户。
提供行列混合存储方案,从而提高了列存数据库特殊查询场景的查询响应耗时。
支持SQL92 标准,支持 C API、ODBC、JDBC、ADO.NET 等接口规范。
4、常见MPPDB
国外DBMPP产品:
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,有良好的体系结构,在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。
Greenplum的性能在TB级别数据量的表现上非常优秀,单机性能相比Hadoop要快上好几倍;在功能和语法上,要比Hadoop上的SQL引擎Hive好用很多,普通用户更加容易上手,Greenplum有着完善的工具,整个体系都比较完善,不需要像Hive一样花太多的时间和精力进行改造。非常适合作为一些大型数据仓库的解决方案。Greenplum能够方便地与Hadoop进行结合,直接把数据卸载Hadoop上,并且能够直接在数据库上写MapReduce任务,同时配置简单。
Asterdata(Teradata)、Nettezza(IBM)、Vertica(HP)
国内DBMPP产品:
DM达梦、TiDB (pingCAP)、OpenGauss & GaussDB (高斯数据库)、SequoiaDB(巨杉数据)、OB & PolarDB (阿里)、TDSQL(腾讯)、GBase 8a MPP cluster(南大通用)