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