探索Greenplum的實踐,瞭解新一代大數據處理利器

做者:李樹桓 個推數據研發工程師

前言:近年來,互聯網的快速發展積累了海量大數據,而在這些大數據的處理上,不一樣技術棧所具有的性能也有所不一樣,如何快速有效地處理這些龐大的數據倉,成爲不少運營者爲之苦惱的問題!隨着Greenplum的異軍突起,以往大數據倉庫所面臨的不少問題都獲得了有效解決,Greenplum也成爲新一代海量數據處理典型表明。本文結合個推數據研發工程師李樹桓在大數據領域的實踐,對處理龐大的數據量時,如何選擇有效的技術棧作了深刻研究,探索出Greenplum是當前處理大數據倉較爲高效穩定的利器。

1、 Greenplum誕生的背景

時間回到2002年,那時整個互聯網數據量正處於快速增加期,一方面傳統數據庫難以知足當前的計算需求,另外一方面傳統數據庫大多基於SMP架構,這種架構最大的一個特色是共享全部資源,擴展性能差,所以面對日益增加的數據量,難以繼續支撐,須要一種具備分佈式並行數據計算能力的數據庫,Greenplum正是在此背景下誕生了。

和傳統數據庫的SMP架構不一樣,Greenplum主要基於MPP架構,這是由多個服務器經過
節點互聯網絡鏈接而成的系統,每一個節點只訪問本身的本地資源(包括內存、存儲等),是一種徹底無共享(Share Nothing)結構,擴展能力較以前有明顯提高。


2、解讀 Greenplum架構

Greenplum主要由Master主節點和Interconnect網絡層以及負責數據存儲和計算的多個節點共同組成。數據庫


Master上有主節點和從節點兩部分,二者主要的功能是生成查詢計劃並派發,以及協調Segment並行計算,同時在Master上保存着global system catalog,這個全局目錄存着一組Greenplum數據庫系統自己所具備的元數據的系統表。須要說明的是Master自己不參與數據交互,Greenplum全部的並行任務都是在Segment的數據節點上完成的,所以,Master節點不會成爲數據庫的性能瓶頸。服務器

中間的網絡層Interconnect,主要負責並行查詢計劃生產和Dispatch分發以及協調節點上QE執行器的並行工做,正是由於Interconnect的存在,Greenplum才能實現對同一個集羣中多個PostgreSQL實例的高效協同和並行計算。

整個結構圖下方負責數據存儲和計算的每一個節點上又有多個實例,每一個實例都是一個

PostgreSQL數據庫,這些實例共享節點的IO和CPU。PostgreSQL在穩定性和性能方面較爲先進,同時又有豐富的語法支持,知足了Greenplum的功能須要。網絡

3、瞭解 Greenplum優點

Greenplum之因此能成爲處理海量大數據的有效工具,與其所具有的幾大優點密不可分。架構

優點一:計算效率提高

Greenplum的數據管道能夠高效地將數據從磁盤傳輸到CPU,而目前市面上經常使用的計算引擎SPARK在傳輸數據時,則須要爲每一個併發查詢分配一個內存,這對大型數據集的查詢十分不利,而Greenplum所具有的實時查詢功能,可以有效對大數據集進行計算。併發

優點二:擴展性能加強

Greenplum基於的MPP架構,節點之間徹底不共享,同時又能夠達到並行查詢,所以在進行線性擴展時,數據規模能夠達到PB級別。目前,Greenplum已經實現了開源,而且社區生態活躍,對於使用者而言,也會以爲更爲可靠。運維

優點三:功能性優化

Greenplum能夠支持複雜的SQL查詢,大幅簡化了數據的操做和交互過程。而目前流行的HAWQ、Spark SQL、Impala等技術基本都基於MapReduce進行的優化,雖然部分也使用了SQL查詢,可是對SQL的支持十分有限。分佈式

4、 Greenplum的容錯機制

Greenplum數據庫簡稱GPDB,它擁有豐富的特性,支持多級容錯機制和高可用。 工具

1)主節點高可用:爲了不主節點單點故障,特別設置一個主節點的副本(稱爲性能

Standby Master),經過流複製技術實現二者同步複製,當主節點發生故障時,從節點能夠成爲主節點,從而完成用戶請求並協調查詢執行。大數據

2)數據節點高可用:每一個數據節點均可以配備一個鏡像,它們之間經過文件操做級別的同步來實現數據的同步複製(稱爲

filerep技術)。故障檢測進程(ftsprobe)會按期發送心跳給各個數據節點,當某個節點發生故障時,GPDB會自動進行故障切換。

3)網絡高可用:爲了不網絡的單點故障,每一個主機會配置多個網口,並使用多個交換機,避免網絡故障時形成整個服務器不可用。

同時,GPDB具備圖形化的性能監控功能,基於此功能,用戶能夠肯定數據庫當前的運行狀況和歷史查詢信息,同時跟蹤系統使用狀況和資源信息。

5、 Greenplum在業務場景中的應用

個推在大數據領域深耕多年,在處理龐大的數據倉的過程當中,也在不斷進行優化和更新技術棧,在進行技術選型時,針對不一樣的技術棧作了以下對比:


總得來講,Greenplum幫助開發者有效解決了處理數據庫時遇到的一些難點,好比跨天去重、用戶自定義維度、複雜的SQL查詢等問題,同時,也方便開發者直接在原始數據上進行實時查詢,減小了數據聚合過程當中的遺失,固然,強大的Greenplum仍存在着一些問題須要去完善,例如在節點擴展的過程當中元數據的管理問題,分佈式數據庫在擴展節點時會帶來數據一致性,
擴展的過程當中有時會出現元數據混亂的狀況等等,好在Greenplum有不少優秀的運維工具,可以幫咱們在發生問題及時進行排查,更好的保障業務的穩定性。可是,儘管Greenplum在處理大數據方面的優點比較明顯,對開發者來講,仍是要根據自身需求選擇相應的技術棧。
相關文章
相關標籤/搜索