MPP大資料系統架構,終於有人講明白了
從資源管理角度來看,當前的大資料系統架構主要有兩種:一種是MPP資料庫架構,另一種是Hadoop體系的分層架構。這兩種架構各有優勢和相應的適用場景。另外,隨著光纖網路通訊技術的發展,大資料系統架構正在向儲存與計算分離的架構和雲化架構方發展。
本文首先回顧並行硬體架構的發展,並進一步介紹基於並行硬體架構的資料庫一體機系統與基於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的資料庫一體機是一樣的,區別是伺服器硬體選擇不限定廠商,叢集彈性伸縮更靈活,成本更低。在大多數情況下,所有節點都使用相同的硬體和相同的作業系統。
本文摘編於《資料應用工程:方法論與實踐》,經出版方授權釋出。(書號:9787111704096)轉載請保留文章出處。
推薦理由:一本講解組織資料能力建設與資料應用工程化的著作,旨在為企業應用和管理資料提供組織建設、技術體系和行業解決方案方面的理論指導和實踐經驗。
來自 “ 數倉寶貝庫 ”, 原文作者:鍾大偉;原文連結:https://mp.weixin.qq.com/s/ta2z_qQinAIRC9fpSlwLMQ,如有侵權,請聯絡管理員刪除。
相關文章
- Linux系統設定環境變數是怎樣的Linux
- FDF/DAPP迴圈互助智慧合約遊戲系統開發技術示例
- 智慧合約馬蹄鏈Polygon系統開發案例丨馬蹄鏈Polygon功能開發詳情Go
- IDO雙幣流動性挖礦智慧合約開發流程丨智慧合約系統開發案例詳情
- 量化交易機器人開發程式碼丨量化機器人功能系統開發(python多語言)Python
- NFT/Defi/ido單雙幣流動性質押挖礦系統開發技術及開發模型
- 異界騎士鏈遊開發NFT系統技術
- matic馬蹄鏈智慧合約dapp系統開發模式定製
- 軟體測試可以發現系統所有Bug嗎?靠譜的軟體測評機構有哪些?
- 農場合成NFT鏈遊遊戲系統開發設計思路丨dapp丨NFT
- GameFi/NFT鏈遊合成遊戲系統技術程式設計開發程式碼示例
- BSC鏈二二複製互助合約系統開發技術方案
- NFT鏈遊合成遊戲系統程式設計開發技術丨dapp丨NFT丨GameFi
- 智慧公廁系統:提高管理效率與使用者體驗的創新解決方案
- 【跟單】去中心化量化合約跟單策略交易系統設計開發思路
- 佛薩奇2.0系統去中心化互助矩陣技術開發專案
- 雲HIS系統原始碼
- 智慧合約量化跟單策略交易系統功能開發(需求細節)
- 我和 chatGPT 對線作業系統!