終于有人把MPP大數(shù)據(jù)系統(tǒng)架構(gòu)講明白了
?本文首先回顧并行硬件架構(gòu)的發(fā)展,并進一步介紹基于并行硬件架構(gòu)的數(shù)據(jù)庫一體機系統(tǒng)與基于MPP架構(gòu)的數(shù)據(jù)庫軟件系統(tǒng)。數(shù)據(jù)庫一體機系統(tǒng)在銀行等大型企業(yè)中采用廣泛,一體機的優(yōu)點是開箱即用、功能豐富、穩(wěn)定、售后服務(wù)好,缺點是價格昂貴、擴展不靈活?;谄胀ǚ?wù)器集群加MPP數(shù)據(jù)庫軟件構(gòu)建的數(shù)據(jù)庫系統(tǒng),優(yōu)點是硬件成本低、水平擴展容易、易于進行海量數(shù)據(jù)處理、吞吐量高,缺點是僅適合用于數(shù)據(jù)分析。
01并行硬件架構(gòu)的發(fā)展
為了提高計算機系統(tǒng)的處理能力,在處理單元(CPU)性能確定的情況下,就需要增加處理單元的數(shù)量,此時從計算單元(CPU)對資源(特別是內(nèi)存)訪問的角度來看,并行硬件架構(gòu)分為三種,詳細(xì)說明如下。
SMP(Symmetric Multi Processing,對稱多處理器)架構(gòu)。這里的“對稱”是指所有處理器之間是平等的,并且共享包括物理內(nèi)存在內(nèi)的所有資源,處理器訪問不同資源的能力(速度)是一致的,每個處理器訪問內(nèi)存中的任何地址所需的時間是相同的,因此SMP架構(gòu)也被稱為UMA(Uniform Memory Access,一致存儲器訪問)架構(gòu)。
- NUMA(Non-Uniform Memory Access,非一致存儲訪問)架構(gòu)。NUMA架構(gòu)服務(wù)器內(nèi)部有多個處理模塊(節(jié)點),每個模塊有多個CPU和本地內(nèi)存,但每個CPU也可以訪問整個系統(tǒng)的內(nèi)存,當(dāng)然訪問本模塊的內(nèi)存要比訪問其他模塊內(nèi)存的速度快,這也是非一致存儲訪問架構(gòu)名稱的由來。
- MPP(Massively Parallel Processing,大規(guī)模并行處理)架構(gòu)。MPP架構(gòu)是將多個處理節(jié)點通過網(wǎng)絡(luò)連接起來,每個節(jié)點是一臺獨立的機器,節(jié)點內(nèi)的處理單元獨占自己的資源,包括內(nèi)存、硬盤、IO等,也就是每個節(jié)點內(nèi)的CPU不能訪問另一個節(jié)點的內(nèi)存(這是MPP與NUMA的主要區(qū)別),MPP架構(gòu)服務(wù)器需要通過軟件實現(xiàn)復(fù)雜的調(diào)度機制以及并行處理過程。
這三種技術(shù)架構(gòu)的發(fā)展是一個并行能力、擴展能力逐漸提高的過程,也是耦合度逐漸減低的過程,它們的區(qū)別如圖1所示。SMP架構(gòu)服務(wù)器的主要問題是擴展能力十分有限,隨著CPU數(shù)量的增加,內(nèi)存訪問沖突出現(xiàn)的概率會快速增加。實驗表明,SMP架構(gòu)服務(wù)器CPU利用率最好的情況是服務(wù)器內(nèi)有2~4個CPU。NUMA架構(gòu)可以在一個物理服務(wù)器內(nèi)最多集成上百個CPU,但由于訪問非本節(jié)點內(nèi)存的延時遠遠超過本地內(nèi)存,因此在CPU達到一定數(shù)量后,無法再通過增加CPU實現(xiàn)系統(tǒng)性能的線性提高。MPP架構(gòu)的擴展性最好,理論上對節(jié)點數(shù)量沒有什么限制,可以包含幾百個節(jié)點。
▲圖1 并行硬件架構(gòu)對比
02基于并行硬件架構(gòu)的數(shù)據(jù)庫設(shè)備
數(shù)據(jù)庫廠商推出了很多軟硬件一體的數(shù)據(jù)庫設(shè)備產(chǎn)品,此類產(chǎn)品是由一臺或多臺主機組成的集成設(shè)備,將服務(wù)器、存儲、操作系統(tǒng)和數(shù)據(jù)庫軟件集成在一起,可以實現(xiàn)開箱即用。國內(nèi)一般將此類產(chǎn)品稱為數(shù)據(jù)庫一體機(Database Machine)。
為了提高性能,此類產(chǎn)品都會采用并行硬件架構(gòu)。從資源共享角度來看,這類產(chǎn)品的數(shù)據(jù)庫架構(gòu)可分成三類,詳細(xì)說明如下。
- 完全透明共享(Shared Everthing)系統(tǒng)。一般是針對單個主機,采用SMP或者NUMA硬件架構(gòu),是一個高性能的單臺服務(wù)器,此類產(chǎn)品可以提供較高的事務(wù)處理能力。
- 完全不共享(Shared Nothing)系統(tǒng)。由多個主機組成,采用MPP硬件架構(gòu),各節(jié)點都有自己私有的CPU、內(nèi)存、硬盤等,不存在共享資源,每個節(jié)點是一臺SMP服務(wù)器,在每個節(jié)點內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫的實例副本,管理本節(jié)點的資源,節(jié)點間通過網(wǎng)絡(luò)通信,能夠處理的數(shù)據(jù)量更大,適合復(fù)雜的數(shù)據(jù)綜合分析,對事務(wù)支持較差。
- 共享磁盤(Shared Disk)系統(tǒng)。由多個主機組成,也屬于MPP硬件架構(gòu),各節(jié)點使用自己私有的CPU和內(nèi)存。共享磁盤系統(tǒng)可實現(xiàn)高可用性,即使一個節(jié)點故障,也可以通過其他節(jié)點訪問所有數(shù)據(jù),但由于節(jié)點之間不共享內(nèi)存,需要一個鎖管理器來維護節(jié)點緩存之間的一致性,會帶來額外的開銷。
這三類產(chǎn)品的功能特點對比如下表所示。
▼表1 三類產(chǎn)品的功能特點對比
?
03基于MPP架構(gòu)的數(shù)據(jù)庫軟件系統(tǒng)
基于MPP架構(gòu)的數(shù)據(jù)庫軟件系統(tǒng),一般簡稱為MPP數(shù)據(jù)庫,它是運行在由普通商用服務(wù)器組成的服務(wù)器集群上,服務(wù)器(節(jié)點)之間通過網(wǎng)絡(luò)連接,每一個節(jié)點都是獨立的、自我管理的,且計算節(jié)點的功能是相同的。也就是說,每個節(jié)點是一臺相對獨立的數(shù)據(jù)庫服務(wù)器,節(jié)點上運行著一個單機操作系統(tǒng)和數(shù)據(jù)管理系統(tǒng),用于管理本節(jié)點上的資源與數(shù)據(jù),即節(jié)點資源私有。以基于PostgreSQL的MPP數(shù)據(jù)庫系統(tǒng)Greenplum為例,每個節(jié)點上實際運行著一個單機版的PostgreSQL數(shù)據(jù)庫實例。如果是主從模式,由管理節(jié)點接收客戶端請求并將任務(wù)分解分派到多個節(jié)點上,在每個節(jié)點上完成數(shù)據(jù)讀取和計算后,再將各部分的中間結(jié)果匯總到管理節(jié)點一起計算,得到最終的結(jié)果并返回客戶端。如果是環(huán)形模式,則每個節(jié)點都可以接收客戶端的請求,并向其他節(jié)點請求數(shù)據(jù),待完成匯總計算后將結(jié)果返回客戶端。MPP數(shù)據(jù)庫架構(gòu)(主從模式或環(huán)形模式)如圖2所示。
▲ 圖5-2 MPP數(shù)據(jù)庫架構(gòu)(主從模式或環(huán)形模式)
從硬件架構(gòu)上來說,MPP數(shù)據(jù)庫與Shared Nothing+MPP的數(shù)據(jù)庫一體機是一樣的,區(qū)別是服務(wù)器硬件選擇不限定廠商,集群彈性伸縮更靈活,成本更低。在大多數(shù)情況下,所有節(jié)點都使用相同的硬件和相同的操作系統(tǒng)。?