一、MPP架構概述
MPP(Massively Parallel Processing,大規模並行處理)通常被定義為一種數據庫或數據倉庫處理架構,其中數據被分為多個片段,並在多個計算節點上並行處理。與大多數RDBMS不同,MPP系統的查詢運行時間不取決於單個CPU的速度,而取決於計算集群中所有節點的數量和處理器速度。
MPP架構可以支持大型、高度並發的數據工作負載,並且可以快速構建出適用於分析建模等大數據維度的數據查詢和分析服務。它的優勢主要是橫向擴展能力強,查詢性能好,可以處理PB級別的數據。
二、MPP架構應用
在實際應用中MPP架構可以用於構建各種數據庫和數據倉庫系統,具體包括:
1.關係型數據庫(RDBMS)
將數據分片,存儲在多個計算節點上,並使用MPP查詢引擎操作數據,這對於處理大型多租戶數據、大型在線交易流程等情況特別有用。具體實現可以參考Apache HAWQ。
2.列式數據庫
與關係型數據庫在節點分布上有所不同,數據通常按列而非行組織,並利用MPP並行處理框架在節點之間分發複雜查詢。具體實現可以參考Apache HBase。
3.分布式文件系統
數據通常以文件形式存儲在多個計算節點上,並在節點之間分發數據的I/O負載。具體實現可以參考Apache HDFS。
三、MPP架構體系結構
典型的MPP架構是由一個或多個控制器節點、多個計算節點和一個網絡鏈路組成的多個級聯節點結構。
1.控制器節點
這是整個MPP架構的中樞,它負責調度和控制所有任務,如查詢分發、查詢解析、查詢優化、負載平衡、備份和恢復。
2.計算節點
計算節點通常部署在分布式集群的不同物理節點上,可以有效地實現計算任務的橫向擴展。每個計算節點包含多個CPU和內存,可以進行數據存儲和計算響應。
3.網絡鏈路
網絡鏈路是MPP架構的中樞,是所有計算節點和控制器節點之間傳遞任務和數據的槓桿。高性能的網絡鏈路是確保MPP系統快速響應,高度可伸縮性和可用性的關鍵之一。
四、MPP架構執行流程
在MPP架構環境下,一個查詢請求可以被精細地分解成多個子任務,並在計算節點上並行執行。具體流程如下:
1.查詢分發
當一個查詢任務到達主控制器節點時,它首先被解析和優化。然後主控制器節點將任務分解成多個子任務,並將它們分發給其中的計算節點。以此來保證查詢的各個維度都可以被分配到各個計算節點上去執行。
/* 示例代碼(僅供參考)*/ // 查詢客戶信息表中所有客戶的姓名、年齡 SELECT name, age FROM customer_info; // 查詢解析和優化完成後,將轉換為多個子任務 // 子任務1:在計算節點1上查找客戶的姓名 SELECT name FROM customer_info WHERE partition_id IN (1,2,3); // 子任務2:在計算節點2上查找客戶的姓名 SELECT name FROM customer_info WHERE partition_id IN (4,5,6); // 子任務3:在計算節點3上查找客戶的姓名 SELECT name FROM customer_info WHERE partition_id IN (7,8,9); // 子任務4:在計算節點1上查找客戶的年齡 SELECT age FROM customer_info WHERE partition_id IN (1,2,3); // 子任務5:在計算節點2上查找客戶的年齡 SELECT age FROM customer_info WHERE partition_id IN (4,5,6); // 子任務6:在計算節點3上查找客戶的年齡 SELECT age FROM customer_info WHERE partition_id IN (7,8,9);
2.子任務執行
每個計算節點負責一個或多個任務的執行。計算節點的數量可以根據負載需求進行伸縮。這使得MPP架構可以快速處理極大規模的查詢請求。
子任務的執行通常是並行執行的,因為多個計算節點同時處理子任務,所以單個節點的性能限制並不影響整個查詢操作的速度。如果一個查詢請求只需要一個計算節點處理,則可以通過查詢優化器手動指定計算節點。
3.結果聚集
在計算節點上執行完後,所有子任務的查詢結果都會被發送回主控制器節點進行匯聚。這樣主控制器節點可以合併所有查詢結果,生成最終的查詢結果並將結果返回查詢發起端。
/* 示例代碼(僅供參考)*/ // 子任務1返回客戶的姓名列表 ['Tom', 'Jerry', 'Peter'] // 子任務2返回客戶的姓名列表 ['Lisa', 'Cindy', 'Lucy'] // 子任務3返回客戶的姓名列表 ['Mary', 'David', 'John'] // 子任務4返回客戶的年齡列表 [25, 31, 42] // 子任務5返回客戶的年齡列表 [27, 39, 28] // 子任務6返回客戶的年齡列表 [33, 29, 35] // 合併查詢結果 // 最終結果1:客戶姓名列表 ['Tom', 'Jerry', 'Peter', 'Lisa', 'Cindy', 'Lucy', 'Mary', 'David', 'John'] // 最終結果2:客戶年齡列表 [25, 31, 42, 27, 39, 28, 33, 29, 35]
五、MPP架構的優缺點
1.優點
①橫向擴展能力強,計算能力和存儲能力隨着節點數的增加而線性增加。
②查詢性能好,能夠快速響應大規模多維度的分析查詢。
③支持PB級別的數據處理,適用於需要大量計算和數據存儲的業務。
2.缺點
①MPP架構部署複雜,需要對於計算節點、網絡節點、控制器節點等多個方面進行資源的調配和管理。
②使用MPP架構需要針對其執行流程開發複雜的程序和算法,使開發成本高,複雜度大。
③MPP架構通常被許多商業數據庫廠商用於高端產品,因此其實現成本較高,部署門檻較高。
六、總結
MPP架構是針對大數據場景下,數據集的計算和處理能力相對於單個CPU和單個服務器進行優化的分布式處理架構。通過合理分配計算和存儲資源,實現可橫向擴展的高擴展性。雖然實施成本高,但是在數據量巨大和查詢性能要求高的場景下,是不可替代的一個選擇。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/229186.html