終于有人把MPP大數據系統架構講明白了
?本文首先回顧并行硬件架構的發展,并進一步介紹基于并行硬件架構的數據庫一體機系統與基于MPP架構的數據庫軟件系統。數據庫一體機系統在銀行等大型企業中采用廣泛,一體機的優點是開箱即用、功能豐富、穩定、售后服務好,缺點是價格昂貴、擴展不靈活。基于普通服務器集群加MPP數據庫軟件構建的數據庫系統,優點是硬件成本低、水平擴展容易、易于進行海量數據處理、吞吐量高,缺點是僅適合用于數據分析。
01并行硬件架構的發展
為了提高計算機系統的處理能力,在處理單元(CPU)性能確定的情況下,就需要增加處理單元的數量,此時從計算單元(CPU)對資源(特別是內存)訪問的角度來看,并行硬件架構分為三種,詳細說明如下。
SMP(Symmetric Multi Processing,對稱多處理器)架構。這里的“對稱”是指所有處理器之間是平等的,并且共享包括物理內存在內的所有資源,處理器訪問不同資源的能力(速度)是一致的,每個處理器訪問內存中的任何地址所需的時間是相同的,因此SMP架構也被稱為UMA(Uniform Memory Access,一致存儲器訪問)架構。
- NUMA(Non-Uniform Memory Access,非一致存儲訪問)架構。NUMA架構服務器內部有多個處理模塊(節點),每個模塊有多個CPU和本地內存,但每個CPU也可以訪問整個系統的內存,當然訪問本模塊的內存要比訪問其他模塊內存的速度快,這也是非一致存儲訪問架構名稱的由來。
- MPP(Massively Parallel Processing,大規模并行處理)架構。MPP架構是將多個處理節點通過網絡連接起來,每個節點是一臺獨立的機器,節點內的處理單元獨占自己的資源,包括內存、硬盤、IO等,也就是每個節點內的CPU不能訪問另一個節點的內存(這是MPP與NUMA的主要區別),MPP架構服務器需要通過軟件實現復雜的調度機制以及并行處理過程。
這三種技術架構的發展是一個并行能力、擴展能力逐漸提高的過程,也是耦合度逐漸減低的過程,它們的區別如圖1所示。SMP架構服務器的主要問題是擴展能力十分有限,隨著CPU數量的增加,內存訪問沖突出現的概率會快速增加。實驗表明,SMP架構服務器CPU利用率最好的情況是服務器內有2~4個CPU。NUMA架構可以在一個物理服務器內最多集成上百個CPU,但由于訪問非本節點內存的延時遠遠超過本地內存,因此在CPU達到一定數量后,無法再通過增加CPU實現系統性能的線性提高。MPP架構的擴展性最好,理論上對節點數量沒有什么限制,可以包含幾百個節點。


▲圖1 并行硬件架構對比
02基于并行硬件架構的數據庫設備
數據庫廠商推出了很多軟硬件一體的數據庫設備產品,此類產品是由一臺或多臺主機組成的集成設備,將服務器、存儲、操作系統和數據庫軟件集成在一起,可以實現開箱即用。國內一般將此類產品稱為數據庫一體機(Database Machine)。
為了提高性能,此類產品都會采用并行硬件架構。從資源共享角度來看,這類產品的數據庫架構可分成三類,詳細說明如下。
- 完全透明共享(Shared Everthing)系統。一般是針對單個主機,采用SMP或者NUMA硬件架構,是一個高性能的單臺服務器,此類產品可以提供較高的事務處理能力。
- 完全不共享(Shared Nothing)系統。由多個主機組成,采用MPP硬件架構,各節點都有自己私有的CPU、內存、硬盤等,不存在共享資源,每個節點是一臺SMP服務器,在每個節點內都有操作系統和管理數據庫的實例副本,管理本節點的資源,節點間通過網絡通信,能夠處理的數據量更大,適合復雜的數據綜合分析,對事務支持較差。
- 共享磁盤(Shared Disk)系統。由多個主機組成,也屬于MPP硬件架構,各節點使用自己私有的CPU和內存。共享磁盤系統可實現高可用性,即使一個節點故障,也可以通過其他節點訪問所有數據,但由于節點之間不共享內存,需要一個鎖管理器來維護節點緩存之間的一致性,會帶來額外的開銷。
這三類產品的功能特點對比如下表所示。
▼表1 三類產品的功能特點對比

?
03基于MPP架構的數據庫軟件系統
基于MPP架構的數據庫軟件系統,一般簡稱為MPP數據庫,它是運行在由普通商用服務器組成的服務器集群上,服務器(節點)之間通過網絡連接,每一個節點都是獨立的、自我管理的,且計算節點的功能是相同的。也就是說,每個節點是一臺相對獨立的數據庫服務器,節點上運行著一個單機操作系統和數據管理系統,用于管理本節點上的資源與數據,即節點資源私有。以基于PostgreSQL的MPP數據庫系統Greenplum為例,每個節點上實際運行著一個單機版的PostgreSQL數據庫實例。如果是主從模式,由管理節點接收客戶端請求并將任務分解分派到多個節點上,在每個節點上完成數據讀取和計算后,再將各部分的中間結果匯總到管理節點一起計算,得到最終的結果并返回客戶端。如果是環形模式,則每個節點都可以接收客戶端的請求,并向其他節點請求數據,待完成匯總計算后將結果返回客戶端。MPP數據庫架構(主從模式或環形模式)如圖2所示。


▲ 圖5-2 MPP數據庫架構(主從模式或環形模式)
從硬件架構上來說,MPP數據庫與Shared Nothing+MPP的數據庫一體機是一樣的,區別是服務器硬件選擇不限定廠商,集群彈性伸縮更靈活,成本更低。在大多數情況下,所有節點都使用相同的硬件和相同的操作系統。?





























