GreenPlum 開源,大規模並行查詢平臺

本博文主要介紹 GreenPlum 特點,核心組件以及底層架構

簡介

世界上第一個開源,大規模並行數據平臺。
GreenPlum 數據庫是一個高級的,功能齊全的開源數據平臺。它提供了PB級數據量上強大而快速的分析能力。GreenPlum 數據庫是專爲大數據分析業務設計。在大數據量上提供高性能的查詢分析性能。

特點

底層基於PostgreSQL,但是GreenPlum數據庫增加了大量並行分析的創新設計。

(1)大規模並行處理架構
GreenPlum 數據庫架構提供了橫向擴展,無共享體系結構的數據和查詢並行化設計。

(2)PB規模數據加載
高性能加載使用MPP技術。加載速度隨着增加節點而增加,每個機架每小時10TB以上

(3)創新的查詢優化器
GreenPlum 數據庫提供的查詢優化器是業界首個針對大數據工作負載而設計的基於成本的查詢優化器。可以將交互式和批處理模式應用到PB級別的大型數據集上,但是不會降低查詢性能和吞吐量

(4)多態數據存儲和執行
表或者分區存儲,執行和壓縮設置可以按照數據訪問方式進行配置。用戶爲每個表或者分區選擇面向行或者列的存儲和處理。

(5)高級的機器學習
由Apache MADlib提供,這是一個可擴展的數據庫內分析庫,通過用戶定義的函數擴展了Greenplum 數據庫的SQL功能

(6)外部數據訪問
通過外部表語法訪問和查詢所有數據, 支持傳統的內部部署和下一代公共數據湖。

GreenPlum數據庫是一個大規模並行處理(MPP)數據庫服務器。其架構設計專門應用於管理大型分析數據倉庫和商業BI工作。

核心概念

(1)MPP, Greenplum and Postgresql
 
MPP(也稱爲無共享體系架構)是指具有兩個或者更多處理器的系統,它們協作執行操作,每個處理器都有各自的處理器,操作系統和磁盤。GreenPlum使用這種高性能系統架構來分配多TB數據倉庫的負載,並且可以並行使用系統資源來處理查詢操作。

GreenPlum數據庫基於PostgreSQL開源技術。基本上是有幾個PostgreSQL數據庫實例組合在一起作爲一個數據庫管理系統。它基於PostgreSQL8.2.15,在大多數情況下,在SQL支持程度,功能和配置選項以及最終用戶功能方面和PostgreSQL相似。數據庫用戶與普通PostgreSQL數據庫管理系統交互和與GreenPlum數據庫交互方式一致。

GreenPlum數據庫底層的PostgreSQL內部已被修改或者補充來支持GreenPlum數據庫的並行結構。例如,系統目錄,優化器,查詢執行器以及書屋管理器組件已被修改和增強,以便能夠跨所有並行PostgreSQL數據庫實例來同時執行查詢操作。GreenPlum互聯(網絡層)支持不同PostgreSQL數據庫實例之間的通訊,因爲互聯層的存在,系統可以作爲一個邏輯數據庫對外提供服務。

GreenPlum數據庫還包括一些專爲BI工作提供的優化設計,例如,GreenPlum添加了並行數據加載(外部表),資源管理,查詢優化和存儲增強,然而這些設計在標準的PostgreSQL數據庫中並不存在。

(2)GreenPlum Architecture

GreenPlum數據庫通過在多臺服務器或者主機上分發數據和處理工作負載來存儲和處理大量數據。GreenPlum由一組基於PostgreSQL8.2數據庫實例協同工作對外提供單個數據庫鏡像。Master是GreenPlum數據庫系統的入口,客戶端連接Master數據庫實例來提交SQL語句。Master節點協調系統中其他的數據庫實例(稱爲段)來存儲和處理數據。

(3) GreenPlum Master

GreenPlum 數據庫主節點是整個數據庫系統的入口,接受客戶端的連接和SQL查詢,並將工作分配給別的數據庫實例(這裏指段數據庫)

客戶端通過Master訪問GreenPlum數據庫系統和連接PostgreSQL數據庫一樣。可以使用客戶端程序(psql)或者應用程序編程接口(API)連接到數據庫,比如如JDBC或者ODBC。
Master節點存儲整個數據庫系統的系統目錄。系統目錄包含有關Greenp數據庫系統本身的元數據的系統表。Master節點不包含任何用戶數據,數據只保存在段節點上。Master節點負責對客戶端連接進行身份驗證,處理接受的SQL命令,在段節點之間均衡負載,協調每個段節點返回的結果數據,並將最終結果呈現給客戶端程序。

(4)GreenPlum Segments

GreenPlum 數據庫段實例是獨立的PostgreSQL數據庫,每個數據庫存儲一部分數據並執行大部分查詢處理。

當用戶通過GreenPlum主服務器連接到數據庫併發出查詢時,每個段數據庫會創建進程並處理基於自己本身數據集上的查詢工作。

用戶定義的表格及其索引分佈在GreenPlum數據庫系統的可用段中。每個段都包含數據的一個特定部分。段數據服務進程在相應的段節點實例中運行,用戶通過Master與GreenPlum數據庫系統進行交互。

段數據庫服務運行在段主機上。一個段主機通常運行2-8個GreenPlum段,具體取決於CPU內核,RAM,存儲和網絡接口以及工作負載。段主機最好是相同的配置。將數據和工作負載均勻的分發到大量同等能力的段上,使得它們可以同時開始工作並同時完成工作,可以使得GreenPlum數據庫系統的性能達到最佳狀態。

(5) GreenPlum Interconnect

GreenPlum Interconnect是GreenPlum數據庫體系結構的網絡層。
互聯是指段和網絡基礎設施之間通信依賴的進程間通信,GreenPlum互聯使用標準的萬兆以太網交換結構。

默認情況下,互聯使用UDP協議通過網絡發送消息。GreenPlum提供的數據庫校驗超過了UDP默認提供的,這就意味着可靠性等同於TCP,性能和擴展性超過了TCP。如果互聯使用TCP,GreenPlum數據庫系統只能最大支持1000個分段實例。使用UDP作爲互聯目前默認的協議,這樣段實例的數量不受限制。

(6)Pivotal查詢優化器

和其他查詢優化器不同的是,Pivotal查詢優化器爲GreenPlum提供了比較高級的查詢優化框架。具體表現在以下幾個方面:
 模塊化
Pivotal查詢優化器使用並不侷限於單個關係型數據庫中。目前在GreenPlum數據庫和Pivotal的HAWQ中都有使用,Pivotal的查詢優化器可以作爲獨立的組件運行,在對應新的後端系統以及將優化器作爲服務部署而言極具靈活性。這也使得我們可以繞過數據庫棧其他組件對優化器進行精確測試。
 可擴展性
Pivotal的查詢優化器被設計爲獨立組件的集合,可以分別替換,配置和擴展。這顯著降低了添加新功能的開發成本,而且可以快速採用新興技術。在查詢優化器內部,查詢元素的表示和查詢優化的方式是分開的,這使得優化程序可以平等的對待所有元素,這樣可以避免在多優化任務中因爲優化步驟的強制順序帶來的問題。

 性能
Pivotal查詢優化器利用多喝跳讀程序,可以將優化任務分配給多個核執行來加速優化過程。
這允許查詢優化器同時應用所有可能的優化,從而產生更多可以選擇的計劃以及更廣的優化查詢的範圍。比如,當Pivotal查詢優化器和TPC-H Query21一起使用的時候,它可以在250ms內產生12億個可能的計劃。這在大數據分析中尤爲重要,極大提升了大數據處理的性能,不理想的優化選擇可能會導致一個查詢永遠被執行下去。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章