什么是大规模并行处理?

大规模并行处理(MPP)是一种处理范例,其中数百或数千个处理节点并行处理计算任务的各个部分。这些节点中的每一个都运行操作系统的单个实例。它们有自己的输入和输出设备,并且不共享内存。它们通过高速互连相互通信,完成共同的计算任务。

大规模并行处理图

处理不断增长的海量数据的组织使用大规模并行处理来处理数据。例如,想象一家拥有数百万客户的受欢迎的保险公司。随着客户数量的增加,客户数据也在增加。即使公司使用并行处理,也可能会在处理客户数据时遇到延迟。假设数据分析师正在对数据库的 1 亿行数据运行查询。如果组织使用具有 1000 个节点的大规模并行处理系统,则每个节点只需承担 1/1000 的计算负载。

现代化您的数据和分析架构
现代化您的数据和分析架构
查看这 13 个使用案例,了解如何支持当今复杂的数据和分析局面。

大规模并行处理需要哪些主要硬件组件?

了解大规模并行处理系统的硬件组件对于了解各种架构至关重要。

处理节点

处理节点是大规模并行处理的基本构造块。这些节点是具有一个或多个中央处理单元的简单同质处理核心。节点可看作是简单的台式机。

高速互连

大规模并行处理系统中的节点并行处理单个计算问题的各个部分。尽管处理过程是相互独立的,但在试图解决常见问题时,节点需要定期互相通信。节点之间需要低延迟、高带宽的连接。这称为高速互连或总线,可以是以太网连接、光纤分布式数据接口或任何专有连接方法。

分布式锁定管理器 (DLM)

如果在大规模并行处理架构中有在节点之间共享的外部内存或磁盘空间,分布式锁管理器 (DLM) 会协调此类资源共享。分布式锁管理器接收来自不同节点的资源请求,并在资源可用时连接节点。在某些系统中,分布式锁定管理器可确保数据的一致性和任何故障节点的恢复。

大规模并行处理架构

大规模并行处理架构按节点共享资源的方式可分为两大类。

共享磁盘系统

共享磁盘系统中的每个处理节点都将具有一个或多个中央处理单元 (CPU) 和独立的随机存取存储器 (RAM)。但是,这些节点共享用于存储文件的外部磁盘空间。这些处理节点通过高速总线连接。共享磁盘系统的可扩展性取决于高速互连的带宽以及分布式锁管理器的硬件限制。

共享磁盘系统的优势是什么?

由于所有节点共享一个外部数据库,大规模并行处理系统变得高度可用。即使一个节点损坏,也不会永久丢失任何数据。共享磁盘系统更加直观,因为它们不必使用分布式数据库。在共享磁盘系统中添加新节点很容易。

共享磁盘系统的缺点是什么?

由于处理节点共享一个公共磁盘,因此数据访问的协调非常复杂。系统需要依赖分布式锁管理器。节点之间的此类通信占用了高速互连的一些带宽。共享磁盘需要操作系统来对其进行控制。这就增加了额外的开销。

无共享系统

大规模并行处理系统一种比较常用的架构是 “无共享” 架构。处理节点具有独立的随机存取存储器和磁盘,用于存储必要的文件和数据库。需要处理的数据利用各种技术在节点之间共享。

复制的数据库:在此方法中,每个处理节点都拥有数据的完整副本。在此模型中,即使有几个节点出现故障,数据丢失的风险也很低。此模型有额外的存储空间开销。

分布式数据库:在此模型中,数据库被划分为多个片段。每个处理节点都拥有数据库的一个特定片段并对其进行操作。由于没有冗余,此方法可节省大量磁盘存储空间。但是,此方法比复制数据库要复杂得多。在这里,需要在在节点之间移动大量数据才能完成处理。这会增加互连总线上的流量。由于没有冗余,此模型还可能导致数据丢失。

关于数据虚拟化,您需要了解的十件事
关于数据虚拟化,您需要了解的十件事
了解有关数据虚拟化的核心真相,以便克服数据瓶颈并取得更好的成果。

“无共享” 系统的优势是什么?

无共享系统可以横向扩展以包含大量节点。由于处理节点彼此相对独立,因此添加新的处理节点更容易。如果数据库是只读的, “无共享” 系统就非常好用。一个节点的故障不会影响其他节点,因为它们几乎是独立的。在 “无共享” 系统中,数据库损坏的可能性极小。

“无共享” 系统的缺点是什么?

具有分布式数据库的 “无共享” 系统需要大量协调才能完成共同的任务。每个节点都拥有数据库的片段。管理此种数据库可能非常困难。带有复制数据库的无共享系统不适合具有大量数据需求的应用程序。如果计算需要大量的数据修改操作,例如数据插入和联接,那么 “无共享” 架构就难以胜任了。

大规模并行处理 (MPP) 与对称多处理 (SMP)

大规模并行处理是一种松散耦合的系统,在某些情况下,节点不共享内存或磁盘空间。大规模并行处理可以看作是通过高速互连总线进行通信的独立处理节点阵列。

对称多处理是具有多个紧密耦合处理器的单个系统。这些处理器共享操作系统、I/O 设备和内存。对称多处理系统通常比大规模并行处理便宜。但是,对称多处理在可扩展的程度上受到限制。对称多处理中的所有处理节点共享一条内存总线,因此随着处理器数量的增加,可能会出现内存瓶颈,最终会降低系统的速度。大规模并行处理系统成本高昂且复杂,但它们可以无限增长。如果处理任务可以完美分区,并且节点之间不太需要通信,则大规模并行处理效果最佳。