兩種主流大數據系統架構的區別,終于有人講明白了
同樣都可以處理大規模數據的MPP數據庫架構與Hadoop體系架構屬于不同的技術體系,二者沒有直接的相關性,卻常常被放在一起進行比較。特別是在企業數據倉庫建設中,MPP架構與Hadoop架構代表兩類典型的技術路線選型,事實上,在2015年左右甚至有人認為基于Hadoop體系的數倉將徹底取代基于MPP數據庫的數倉。
1.設計思路對比
兩類系統運行的硬件架構是相同的,都是普通服務器組成的集群,但從資源管理角度來說,它們并行化軟件實現的設計思路卻是相反的。
MPP架構相當于對單機的各類資源進行垂直綜合管理,再將多個單機系統橫向連接進行集成,可以說是先垂直后水平。
Hadoop架構相當于將所有機器的存儲資源與計算資源抽象出來,分開管理,再進行組件級的垂直集成,可以說是先水平后垂直。
MPP與Hadoop架構對比如圖1所示。
▲圖1 MPP與Hadoop架構對比
具體分析如下。
MPP架構是將許多單機數據庫通過網絡連接起來,相當于將一個個垂直系統橫向連接,形成一個統一對外服務的分布式數據庫系統,每個節點由一個單機數據庫系統獨立管理和操作該節點所在物理機上的所有資源(CPU、內存、磁盤、網絡),節點內系統的各組件間的相互調用不需要通過控制節點,即對控制節點來說,每個節點的內部運行過程相對透明。
Hadoop架構是將不同的資源管理與功能進行分層抽象設計,每層形成一類組件,實現一定程度的解耦,包括存儲資源管理、計算資源管理、通用并行計算框架、各類分析功能等,在每層內進行跨節點的資源統一管理或功能并行執行,層與層之間通過接口調用,相互透明,節點內不同層的組件間的相互調用需要由控制節點掌握或通過控制節點協調,即控制節點了解每個節點內不同層組件間的互動過程。
2.優缺點對比
MPP架構的優缺點總結如下:
- 支持標準SQL,每個節點都有豐富的事務處理和管理功能;
- 資源管理精細;
- 更適合預知數據結構模型的中等規模的固定模式數據管理;
- 集群規模調整要求較多,增減節點時通常需要停機,且有的系統只能增加不能減少;
- 延遲小,相對吞吐量一般,單節點緩慢會拖累整體性能;
- 表記錄進行水平分割存儲,方法通常包括一致性哈希(Consistent Hashing)、循環寫入(Round Robin),但容易產生數據熱點。
Hadoop架構的優缺點總結如下:
- 每個節點功能簡單,不具備豐富的數據管理功能,不支持事務;
- 數據更新采用追加方式實現,同等數據量處理需要的資源更多;
- 可以不用預先了解數據的格式與內容;
- 擴展性好,支持集群規模更大,能動態擴容,支持擴充僅用于計算的節點;
- 延遲高、吞吐量大、容錯性(Failover)好。
總體來說,Hadoop架構在數據量較低的情況下,運行速度遠不及MPP架構,但數據量一旦超過某個量級,Hadoop架構在吞吐量方面將非常有優勢。有些大數據數據倉庫產品也采用混合架構,以融合兩者的優點,例如Impala、Presto等都是基于HDFS的MPP分析引擎,僅利用HDFS實現分區容錯性,放棄MapReduce計算模型,在面向OLAP場景時可實現更好的性能,降低延遲。
本文摘編于《數據應用工程:方法論與實踐》,經出版方授權發布。(書號:9787111704096)轉載請保留文章出處。