1.2.14 分布式MPP计算架构
MPP(Massively Parallel Processing,大规模并行分析处理)架构模式,是典型的分布式计算模式。MPP的各节点不共享资源,每个执行节点可以独自完成数据的读取和计算。
MPP架构核心原理如下。
1)将数据集分布在许多机器或节点上,以处理大量数据。
2)每个节点都有独立的磁盘存储系统和内存系统。
3)业务数据根据数据库模型和应用特点划分到各个节点上。
4)每个数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。
在MPP架构中,各节点都包含自己的存储和计算功能,可以独立执行查询的一部分。最后,在内存里进行数据合并,并将结果返回客户端。MPP具有可伸缩、高可用、高性能、资源共享等优势。
小贴士:SMP与MPP
当今数据计算领域主要的应用程序和模型可大致分为在线事务处理(On-line Transaction Processing,OLTP)、决策支持系统(Decision-making Support System,DSS)和企业信息通信(Business Communication)三大类。计算平台的体系结构通常有小型独立服务器、SMP(Symmetrical Multi-Processing,对称多处理)、MPP(大规模并行处理)和NUMA(Non Uniform Memory Access,非均匀存储器存取)结构。这里,我们重点讲一下SMP与MPP。
1.SMP
SMP是指在一个计算机上汇集了一组处理器(多核CPU),各CPU之间共享内存子系统以及总线结构。代表数据库有Oracle、MySQL。SMP架构原理图如图1-15所示。
图1-15 SMP架构原理图
SMP的典型特征如下:
❑每个处理器共享操作系统的一个副本。
❑支持共享架构。
❑多任务并行架构,是一个紧耦合的多处理器系统。
❑多个处理器之间共享整个工作。
❑没有单独的缓存池或锁表,全部共享。
❑通过购买更大的系统来实现扩展。
❑容易出现资源争用等问题。
❑创建分布式架构需要复杂的设计,并且只能部分实现。
❑软件提供的内存可用量完全取决于RAM和负载的数量。
在SMP中,每个CPU都有自己的缓存,无论双核还是四核,其余资源都是共享的。
SMP的优点如下。
1)共享单一操作系统副本。
2)应用程序编程模式简便。
3)管理成本低,易于维护管理。
SMP的缺点如下。
1)伸缩扩展能力非常有限。对SMP服务器进行扩展的方式包括增加内存、使用更快的CPU、增加CPU、扩充I/O(槽口数与总线数)以及添加更多的外部设备(通常是磁盘存储设备)。这样的架构模式直接导致内存上线受限制。
2)CPU利用率低。由于每个CPU必须通过相同的内存总线访问相同的内存资源,因此随着CPU数量的增加,内存访问冲突将迅速增加,最终造成CPU资源的浪费,大大降低CPU性能的有效性。
3)总线有瓶颈。当大型程序的处理要求大于共享总线时,总线就没有能力进行处理了,这时共享的总线就成为性能瓶颈。
4)容错性和效率较低。
SMP的典型应用场景是托管小型网站和电子邮件服务器等。
2.MPP
MPP,即大规模并行处理系统,由许多松耦合的处理单元组成。注意,这里是指处理单元而不是处理器。每个单元内的CPU都有自己私有的资源,如总线、内存、硬盘等。每个单元内都有操作系统和管理数据库实例。这种结构最大的特点在于不共享资源。代表数据库有ClickHouse、Snowflake、Azure Synapse Analytics、Impala、Greenplum、Elasticsearch、Presto。MPP架构原理图如图1-16所示。
MPP典型特征如下:
❑每个处理器都使用自己的操作系统和内存。
❑支持无共享架构。
❑多个处理器对单个任务进行协调处理。每个处理器处理任务的不同部分。
图1-16 MPP架构原理图
❑每个节点只负责处理自己磁盘上的任务。
❑每个节点维护自己的一组锁表和缓存池,增加了内存功能的可用性。
❑只需添加机架即可轻松实现可扩展性,支持TB到PB数据量级的水平扩展。
❑完全不共享资源,所以不存在资源争用。
❑被设计为分布式架构。
❑数据被水平分区,压缩率高,以最佳方式使用内存。
❑处理器使用消息进行通信。
MPP的优点如下。
1)每个处理器都使用自己的操作系统和内存。
2)性能好。大规模数据并行处理能力优秀,适合于复杂的大型数据分析与处理场景。
3)可伸缩。在MPP增加节点时,MPP的性能可以线性扩展。MPP在数据仓库决策支持和数据挖掘方面占据优势。
4)低成本。基于MPP的数据仓库解决方案旨在廉价的商用硬件上运行,不需要可能包含成本的企业级双冗余组件。
5)高可用。使用自动数据复制来提高系统弹性并确保高可用性。
6)高吞吐量。MPP可以实现非常高的吞吐量,因为读写操作可以在集群中的独立节点上并行执行。
MPP的缺点如下。
1)管理成本高。MPP需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程,通信复杂。当通信时间长时,MPP性能会变差。目前一些基于MPP技术的服务器一般通过系统级软件(如数据库)来屏蔽这种复杂性。
2)短板效应:如果遇到“短板”节点,整个引擎的性能将下降到该短板节点的能力(木桶的短板)。MPP架构不适合异构的机器,它要求各节点配置相同。
MPP的典型应用场景是数据仓库、大规模数据处理和数据挖掘等。