1. 程式人生 > >探索Greenplum的實踐,瞭解新一代大資料處理利器

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

作者:李樹桓 個推資料研發工程師

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

一、Greenplum誕生的背景

時間回到2002年,那時整個網際網路資料量正處於快速增長期,一方面傳統資料庫難以滿足當前的計算需求,另一方面傳統資料庫大多基於SMP架構,這種架構最大的一個特點是共享所有資源,擴充套件效能差,因此面對日益增長的資料量,難以繼續支撐,需要一種具有分散式並行資料計算能力的資料庫,Greenplum正是在此背景下誕生了。

和傳統資料庫的SMP架構不同,Greenplum主要基於MPP架構,這是由多個伺服器通過節點網際網路絡連線而成的系統,每個節點只訪問自己的本地資源(包括記憶體、儲存等),是一種完全無共享(Share Nothing)結構,擴充套件能力較之前有明顯提升。

圖片描述

二、解讀 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的功能需要。

三、瞭解Greenplum優勢

Greenplum之所以能成為處理海量大資料的有效工具,與其所具備的幾大優勢密不可分。 優勢一:計算效率提升Greenplum的資料管道可以高效地將資料從磁碟傳輸到CPU,而目前市面上常用的計算引擎SPARK在傳輸資料時,則需要為每個併發查詢分配一個記憶體,這對大型資料集的查詢十分不利,而Greenplum所具備的實時查詢功能,能夠有效對大資料集進行計算。優勢二:擴充套件效能增強Greenplum基於的MPP架構,節點之間完全不共享,同時又可以達到並行查詢,因此在進行線性擴充套件時,資料規模可以達到PB級別。目前,Greenplum已經實現了開源,並且社群生態活躍,對於使用者而言,也會覺得更為可靠。優勢三:功能性優化 Greenplum可以支援複雜的SQL查詢,大幅簡化了資料的操作和互動過程。而目前流行的HAWQ、Spark SQL、Impala等技術基本都基於MapReduce進行的優化,雖然部分也使用了SQL查詢,但是對SQL的支援十分有限。

四、Greenplum的容錯機制

Greenplum資料庫簡稱GPDB,它擁有豐富的特性,支援多級容錯機制和高可用。 1)主節點高可用:為了避免主節點單點故障,特別設定一個主節點的副本(稱為 Standby Master),通過流複製技術實現兩者同步複製,當主節點發生故障時,從節點可以成為主節點,從而完成使用者請求並協調查詢執行。2)資料節點高可用:每個資料節點都可以配備一個映象,它們之間通過檔案操作級別的同步來實現資料的同步複製(稱為filerep技術)。故障檢測程序(ftsprobe)會定期傳送心跳給各個資料節點,當某個節點發生故障時,GPDB會自動進行故障切換。 3)網路高可用:為了避免網路的單點故障,每個主機會配置多個網口,並使用多個交換機,避免網路故障時造成整個伺服器不可用。

同時,GPDB具有圖形化的效能監控功能,基於此功能,使用者可以確定資料庫當前的執行情況和歷史查詢資訊,同時跟蹤系統使用情況和資源資訊。

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

個推在大資料領域深耕多年,在處理龐大的資料倉的過程中,也在不斷進行優化和更新技術棧,在進行技術選型時,針對不同的技術棧做了如下對比:

圖片描述

總得來說,Greenplum幫助開發者有效解決了處理資料庫時遇到的一些難點,比如跨天去重、使用者自定義維度、複雜的SQL查詢等問題,同時,也方便開發者直接在原始資料上進行實時查詢,減少了資料聚合過程中的遺失,當然,強大的Greenplum仍存在著一些問題需要去完善,例如在節點擴充套件的過程中元資料的管理問題,分散式資料庫在擴充套件節點時會帶來資料一致性,擴充套件的過程中有時會出現元資料混亂的情況等等,好在Greenplum有很多優秀的運維工具,能夠幫我們在發生問題及時進行排查,更好的保障業務的穩定性。但是,儘管Greenplum在處理大資料方面的優勢比較明顯,對開發者來說,還是要根據自身需求選擇相應的技術棧。