2024年4月16日发(作者:)

MPP大规模并行处理架构详解

面试官:说下你知道的MPP架构的计算引擎?

这个问题不少小伙伴在面试时都遇到过,因为对MPP这个概念了解较少,不少人都卡壳了,但是我们常

用的大数据计算引擎有很多都是MPP架构的,像我们熟悉的Impala、ClickHouse、Druid、Doris等都是

MPP架构。

采用MPP架构的很多OLAP引擎号称:亿级秒开。

本文分为三部分讲解,第一部分详解MPP架构,第二部分剖析MPP架构与批处理架构的异同点,第三

部分是采用MPP架构的OLAP引擎介绍。

一、MPP架构

MPP是系统架构角度的一种服务器分类方法。

目前商用的服务器分类大体有三种:

1. SMP(对称多处理器结构)

2. NUMA(非一致存储访问结构)

3. MPP(大规模并行处理结构)

我们今天的主角是 MPP,因为随着分布式、并行化技术成熟应用,MPP引擎逐渐表现出强大的高吞吐、

低时延计算能力,有很多采用MPP架构的引擎都能达到“亿级秒开”。

先了解下这三种结构:

1. SMP

即对称多处理器结构,就是指服务器的多个CPU对称工作,无主次或从属关系。SMP服务器的主要特

征是共享,系统中的所有资源(如CPU、内存、I/O等)都是共享的。也正是由于这种特征,导致了SMP服

务器的主要问题,即扩展能力非常有限。

2. NUMA

即非一致存储访问结构。这种结构就是为了解决SMP扩展能力不足的问题,利用NUMA技术,可以把

几十个CPU组合在一台服务器内。NUMA的基本特征是拥有多个CPU模块,节点之间可以通过互联模块进

行连接和信息交互,所以,每个CPU可以访问整个系统的内存(这是与MPP系统的重要区别)。但是访问

的速度是不一样的,因为CPU访问本地内存的速度远远高于系统内其他节点的内存速度,这也是非一致存储

访问NUMA的由来。

这种结构也有一定的缺陷,由于访问异地内存的时延远远超过访问本地内存,因此,当CPU数量增加时,

系统性能无法线性增加。

3. MPP

即大规模并行处理结构。MPP的系统扩展和NUMA不同,MPP是由多台SMP服务器通过一定的节点

互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。每个节点只访问自

己的资源,所以是一种完全无共享(Share Nothing)结构。

MPP结构扩展能力最强,理论可以无限扩展。由于MPP是多台SPM服务器连接的,每个节点的CPU

不能访问另一个节点内存,所以也不存在异地访问的问题。