1. 程式人生 > >開源大資料引擎:Greenplum 資料庫架構分析

開源大資料引擎:Greenplum 資料庫架構分析

Greenplum 資料庫是最先進的分散式開源資料庫技術,主要用來處理大規模的資料分析任務,包括資料倉庫、商務智慧(OLAP)和資料探勘等。自2015年10月正式開源以來,受到國內外業內人士的廣泛關注。本文就社群關心的Greenplum資料庫技術架構進行介紹。

一. Greenplum資料庫簡介

大資料是個炙手可熱的詞,各行各業都在談。一談到大資料,好多人認為就是Hadoop。實際上Hadoop只是大資料若干處理方案中的一個。現在的SQL、NoSQL、NewSQL、Hadoop等等,都能在不同層面或不同應用上處理大資料的某些問題。而Greenplum資料庫做為一個分散式大規模並行處理資料庫,在大多數情況下,更適合做大資料的儲存引擎、計算引擎和分析引擎。

Greenplum資料庫也簡稱GPDB。它擁有豐富的特性:

第一,完善的標準支援:GPDB完全支援ANSI SQL 2008標準和SQL OLAP 2003 擴充套件;從應用程式設計介面上講,它支援ODBC和JDBC。完善的標準支援使得系統開發、維護和管理都大為方便。而現在的 NoSQL,NewSQL和Hadoop 對 SQL 的支援都不完善,不同的系統需要單獨開發和管理,且移植性不好。

第二,支援分散式事務,支援ACID。保證資料的強一致性。

第三,做為分散式資料庫,擁有良好的線性擴充套件能力。在國內外使用者生產環境中,具有上百個物理節點的GPDB叢集都有很多案例。

第四,GPDB是企業級資料庫產品,全球有上千個叢集在不同客戶的生產環境執行。這些叢集為全球很多大的金融、政府、物流、零售等公司的關鍵業務提供服務。

第五,GPDB是Greenplum(現在的Pivotal)公司十多年研發投入的結果。GPDB基於PostgreSQL 8.2,PostgreSQL 8.2有大約80萬行原始碼,而GPDB現在有130萬行原始碼。相比PostgreSQL 8.2,增加了約50萬行的原始碼。

第六,Greenplum有很多合作伙伴,GPDB有完善的生態系統,可以與很多企業級產品整合,譬如SAS,Cognos,Informatic,Tableau等;也可以很多種開源軟體整合,譬如Pentaho,Talend 等。

二. Greenplum架構

2.1 平臺架構

圖(1)是Greenplum資料庫平臺概括圖。平臺分為四個層次,我們依次從下往上看。

圖片描述

MPP核心架構

  • GPDB是大規模無共享的處理架構,後面會專門介紹;

  • 先進的並行優化器是效能突出的關鍵之一。GPDB有兩個優化器,一個是基於PostgreSQL planner的優化器;一個是全新開發的ORCA優化器。ORCA是Greenplum 5年以前啟動的全新專案,這個優化器經過幾年的開發和測試之後,最近已經成為GPDB企業版本的預設優化器。

  • GPDB的儲存引擎支援多型儲存,一個表的資料可以根據訪問模式的不同使用不同的儲存方式。儲存方式對使用者透明,執行查詢時,不用關心待訪問的資料使用的儲存模式,優化器會自動選擇最佳查詢計劃。

  • 分散式資料庫中,某些操作(例如跨節點關聯)需要多個節點間進行資料交換。GPDB的並行資料庫流引擎,可以根據資料的特點,例如分佈方式、資料量等選擇最合適的資料流操作符。目前GPDB支援兩種資料流操作符:重分發(Redistribution)和廣播(Broadcast)。重分發根據資料的雜湊值重新分發到各個資料節點上,適用於資料量大的情況;廣播則將資料傳送給所有資料節點,適用於資料量較小的情況,例如維度表。

  • 軟體交換機是GPDB的一個重要元件,軟體交換機可以在各個資料節點間及與主節點間建立可靠的UDP資料通訊機制,是實現高效資料流的核心。

  • Scatter/Gather 流引擎是專為並行資料載入和匯出而設計,Scatter指資料通過並行載入伺服器並行分散到各個資料節點,Gather指資料在 GPDB內部可以根據分佈策略按需並行分發。

服務層

  • GPDB支援多級容錯機制和高可用:
    o 主節點(Master)高可用:為了避免主節點單點故障,可以設定一個主節點的副本(稱為 Standby Master),他們之間通過流複製技術實現同步複製。當主節點發生故障時,從節點成為主節點,處理使用者請求並協調查詢執行。它們之間通過心跳檢測故障。
    o 資料節點(Segment)高可用:每個資料節點都可以配備一個映象,它們之間通過檔案操作級別的同步實現資料的同步複製(稱為filerep技術)。資料節點上建議使用RAID5磁碟,以進一步提高資料的高可用。故障檢測程序(ftsprobe)定期傳送心跳給各個資料節點。當某個節點發生故障時,GPDB會自動進行故障切換。
    o 網路高可用:為了避免網路的單點故障,每個主機配置多個網口,並使用多個交換機避免網路故障時造成整個服務不可用。

  • 線上擴充套件:資料量增大,現有叢集不能滿足需求時,可以對GPDB資料庫進行動態擴充套件。擴充套件過程中,業務可以繼續執行,不需要宕機。

  • 任務管理是指對資源的管理和使用情況的管理。

產品特性

  • 資料載入在後面會專門介紹。

  • 資料聯邦是比較有意思的,最近“資料湖泊”這個詞非常火熱,資料湖泊的目的是不需再對資料像以前那樣經過定製,生成特定的業務報表;而是儲存原始資料,什麼時候想分析就從原始資料上直接處理。GBDB可以實現資料湖泊(我們稱之為資料聯邦),它能訪問和處理資料中心裡面的所有資料,不管你的資料是在Hadoop、在檔案系統上、還是在其他資料庫中,Greenplum可以使用一個SQL在保證ACID的前提下訪問所有資料。

  • GPDB即支援行存,也支援列存。還為不需更新的資料儲存和處理進行了專門的優化。

  • 支援多種壓縮方法,包括QuickLZ,Zlib,RLE 等。
  • 支援多級分割槽表,分割槽支援多種模式,包括範圍,列表等。
  • 支援B樹、點陣圖和GiST 等索引
  • GPDB認證機制支援多種方式,包括LDAP和Kerberos等。通過訪問控制列表(ACL),可以實現靈活的基於角色的安全控制。
  • 擴充套件語言支援:GPDB 支援使用多種流行語言實現使用者自定義函式(UDF,類似於Oracle的儲存過程),包括 Python,R,Java,Perl,C/C++ 等。
  • 地理資訊處理:通過整合PostGIS,GPDB支援對地理資訊進行儲存和分析。
  • 內建資料探勘演算法庫:通過MADLib(現在是Apache孵化專案)演算法庫,可以內建幾十種常見的資料分析和挖掘演算法到GPDB資料庫中,包括邏輯迴歸,決策樹,隨機森林等。不需要寫任何演算法程式碼,通過SQL就可以使用其中的所有演算法。
  • 文字檢索:通過GPText擴充套件,GPDB可以支援高效靈活豐富的全文檢索功能。與 MADLib 合用,可以進行並行文字分析和挖掘。

客戶端訪問和工具

通過psql命令列工具可以訪問GPDB資料庫的所有功能,此外還提供了ODBC、JDBC、OLEDB、libpq等應用程式設計介面。

資料庫或者資料叢集的管理工具非常重要,GPDB提供了圖形化的管理工具GPCC(Greenplum Command Center),幫你管理狀態,監控資源使用情況。

Greenplum Workload Manager是剛剛釋出的新產品,用以實現基於規則的資源管理。它支援自定義規則,當某個SQL滿足規則描述的條件時會執行某些操作。比如你可以定義規則自動取消消耗CPU資源達50%以上的查詢。

2.2 大規模並行處理(MPP)無共享架構

MPP 是Greenplum資料庫最突出的特色。現在很流行MPP這個詞,我們可以看一下它是什麼意思。下邊圖(2)中,主節點有兩個,一個是主節點,一個是從主節點。通過軟交換機制,也就是通過高速網路,主節點連到資料節點。每個資料節點有自己的CPU,自己的記憶體,自己的硬碟,他們唯一共享的就是網路。這也是稱為無共享架構的原因。這種架構的好處是叢集是分散式的環境,資料可以分佈在很多節點上進行並行處理,可以做到線性擴充套件。

圖片描述

在分散式資料庫中,效能好壞的最重要因素是資料分佈是否均勻。如果資料分佈不均勻,有的節點上資料非常多,有的節點資料很少,這樣會出現短板效應,整個SQL的效率不會很好。Greenplum支援多種資料分佈的策略,預設使用主鍵或者第一個欄位進行雜湊分佈,還支援隨機分佈。除了橫向上資料可以按節點分佈之外,在某個節點上還可以對資料進行分割槽。分割槽的規則比較靈活,可以按照範圍分割槽,也可以按照列表值分割槽,如圖(3)。

圖片描述

2.3 並行查詢計劃和執行

下面是個簡單的SQL,如圖(4),從兩張表中找到2008年的銷售資料。圖中右邊是這個SQL的查詢計劃。從生成的查詢計劃樹中看到有三種不同的顏色,顏色相同表示做同一件事情,我們稱之為分片/切片(Slice)。最下層的橙色切片中有一個重分發節點,這個節點將本節點的資料重新分發到其他節點上。中間綠色切片表示分散式資料關聯(HashJoin)。最上面切片負責將各個資料節點收到的資料進行彙總。

圖片描述

然後看看這個查詢計劃的執行,如圖(5)。主節點(Master)上的排程器(QD)會下發查詢任務到每個資料節點,資料節點收到任務後(查詢計劃樹),建立工作程序(QE)執行任務。如果需要跨節點資料交換(例如上面的HashJoin),則資料節點上會建立多個工作程序協調執行任務。不同節點上執行同一任務(查詢計劃中的切片)的程序組成一個團伙(Gang)。資料從下往上流動,最終Master返回給客戶端。

圖片描述

2.4 多型儲存

上面介紹了GPDB的特點和SQL執行計劃以及執行過程,那資料在每個節點上到底怎麼樣儲存?

Greenplum提供稱為“多型儲存”的靈活儲存方式。多型儲存可以根據資料熱度或者訪問模式的不同而使用不同的儲存方式。一張表的不同資料可以使用不同的物理儲存方式,如圖(6)。支援的儲存方式包含:

  • 行儲存:行儲存是傳統資料庫常用的儲存方式,特點是訪問比較快,多列更新比較容易。
  • 列儲存:列儲存按列儲存,不同列的資料儲存在不同的地方(通常是不同檔案中)。適合一次只訪問寬表中某幾個欄位的情況。列儲存的另外一個優勢是壓縮比高。
  • 外部表:資料儲存在其他系統中例如HDFS,資料庫只保留元資料資訊。

圖片描述

2.5 大規模並行資料載入

作為一個數據庫,一定會儲存和處理資料。那資料來源於什麼地方?Oracle這樣的資料庫裡面的資料多是客戶生成的,譬如你銀行轉賬、淘寶訂單等。對於資料分析型的資料庫,其源資料通常是在其他系統中,而且資料量很大。這樣資料載入的能力就變得非常重要。Greenplum提供了非常好的資料載入方案,支援高速的載入各種資料來源的不同資料格式的資料,如圖(7)。

  • 並行資料載入:因為是並行資料載入,所以效能非常好。Greenplum有叫DCA的一體機產品,第一代DCA可以做到10TB/小時;第二代為16TB/小時。第三代很快就要釋出了,速度會更快。
  • 資料來源和資料格式:資料來源支援Hadoop,檔案系統,資料庫,還有 ETL管理的資料。資料格式支援文字,CSV,Parquet,Avro等。

圖片描述

三. Greenplum核心元件

Greenplum 資料庫包括以下核心元件:

  • 解析器:主節點收到客戶端請求後,執行認證操作。認證成功建立連線後,客戶端可以傳送查詢給資料庫。解析器負責對收到的查詢SQL字串進行詞法解析、語法解析,並生成語法樹。
  • 排程器(QD):排程器傳送優化後的查詢計劃給所有資料節點(Segments)上的執行器(QE)。排程器負責任務的執行,包括執行器的建立、銷燬、錯誤處理、任務取消、狀態更新等。
  • 執行器(QE):執行器收到排程器傳送的查詢計劃後,開始執行自己負責的那部分計劃。典型的操作包括資料掃描、雜湊關聯、排序、聚集等。
  • Interconnect:負責叢集中各個節點間的資料傳輸。
  • 系統表:系統表儲存和管理資料庫、表、欄位的元資料。每個節點上都有相應的拷貝。
  • 分散式事務:主節點上的分散式事務管理器協調資料節點上事務的提交和回滾操作,由兩階段提交(2PC)實現。每個資料節點都有自己的事務日誌,負責自己節點上的事務處理。

四、Greenplum開源

2015年3月份,Pivotal宣佈了Greenplum的開源計劃,經過6個月緊鑼密鼓的工作,於10月27號正式開源。官方網站為http://greenplum.org。許可證書使用Apache 2許可證。

有關Greenplum資料庫使用和開發的任何問題都可以去郵件列表討論:郵件列表有兩個:[email protected][email protected]

原始碼位於https://github.com/greenplum-db/gpdb,開源不到兩個月就有1187個收藏,256個fork,超過150個pull request,其中136個pull request 已經關閉。貢獻者中除了包含Pivotal的員工外,還有來自全球(包括中國、美國、日本和歐洲)的社群開發人員。關於從原始碼編譯和安裝Greenplum資料庫,可以參考:http://gpdb.rocks/gpdb/2015/10/29/how-to-build-gpdb.html

作者簡介:姚延棟 Pivotal研發總監,2005年畢業於中科院軟體所。曾在Sun
Microsystems、Symantec工作多年,2010年加入Greenplum(現在的Pivotal),負責中國研發團隊。

(責編/魏偉,關注Docker和openStack,歡迎加入我們的微信專家群,和大牛面對面交流技術,搜微信“k15751091376”加入,備註公司+姓名)

相關推薦

開源資料引擎Greenplum 資料庫架構分析

Greenplum 資料庫是最先進的分散式開源資料庫技術,主要用來處理大規模的資料分析任務,包括資料倉庫、商務智慧(OLAP)和資料探勘等。自2015年10月正式開源以來,受到國內外業內人士的廣泛關注。本文就社群關心的Greenplum資料庫技術架構進行介紹。一

詳解開源資料引擎Greenplum架構和技術特點

作者:周雷皓 ,百度外賣大資料工程師,本文為《程式設計師》原創文章,未經允許不得轉載,更多精彩文章請訂閱《程式設計師》 本文介紹了大資料引擎Greenplum的架構和部分技術特點。從GPDB基本背景開始,在架構的層面上講解GPDB系統內部各個模組的概貌,然

開源大數據引擎Greenplum 數據庫架構分析

libpq ash 排序 sql命令 出現 計劃 mil 月份 監控 Greenplum 數據庫是最先進的分布式開源數據庫技術,主要用來處理大規模的數據分析任務,包含數據倉庫、商務智能(OLAP)和數據挖掘等。自2015年10月正式開源以來。受到國內外業內人士的

商用資料平臺的五層架構分析

IaaS、PaaS、SaaS是雲端計算的三種不同的服務模式,IaaS基礎設施在最下端,PaaS平臺在中間,SaaS軟體在頂端。 IaaS :Infrastructure-as-a-Service 基礎構架即服務。這一層主要是對基礎設施進行管理以給使用者提供資源使用,如提供計算服務、安全備份、

資料雲平臺 Greenplum多租戶篇

什麼是多租戶 多租戶指一套系統能夠支撐多個租戶。一個租戶通常是具有相似訪問模式和許可權的一組使用者,典型的租戶是同一個組織或者公司的若干使用者。 要實現多租戶,首先需要考慮的是資料層面的多租戶。資料層的多租戶模型對上層服務和應用的多租戶實現有突出影響。本文重點

阿里資料工程師教你如何快速的搭建資料庫

資料倉庫,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個數據儲存,出於分析性報告和決策支援目的而建立。為需要業務智慧的企業,提供指導業務流程改進、監視時間、成本、質量以及控制。 下面我們來講大資料開發核心流程。 當我們接到一個需求,首先會進行需求分析,

電信行業資料應用的後盾 MPP架構資料庫技術

在大資料時代,資料呈爆炸式增長,單個SMP系統已經無法應付資料增長所帶來的巨大壓力。隨著網路技術的發展,PC伺服器的“小型化”以及Linux系統的成熟,基於MPP架構的新一代資料庫技術成為各行業使用者的首選。電信行業作為國家重點行業,引領著IT技術的發展方向和潮流,在高併

阿里開發者們的第15個感悟做一款優秀資料引擎,要找準重點解決的業務場景

1月10日,做一款優秀大資料引擎,要找準重點解決的業務場景。這是我們送給開發者的第15個感悟。 沐遠在社群分享了他的博文,《使用spark分析雲HBase的資料》《hive資料匯入雲hbase》,粉絲評論說請收下我的膝蓋。 李偉(沐遠)阿里雲資料庫技術專家專注大資料分散式計算資料庫領域, 研發Spark及

基於Hadoop架構下的FineBI資料引擎技術原理

隨著各個業務系統的不斷增加,以及各業務系統資料量不斷激增,業務使用者的分析訴求越來越多且變化很快,IT資料支撐方的工作變得越來越複雜。 1、資料來自多個不同的系統,存在需要跨資料來源分析,需要對接各種不同資料來源等問題。 2、需要分析的資料體量越來越大,並且要快速獲得分析結果的問題。 3

柯南君資料時代下的IT架構(8)訊息佇列之RabbitMQ--案例(topic起航)

public class ReceiveLogsTopic { private static final String EXCHANGE_NAME = "topic_logs"; public static void main(String[] argv)

開源資料分析引擎Impala實戰 筆記

第三章 Impala 概念及架構 3.1 Impala服務元件 3.1.1 Impala Deamon 該程序運行於叢集每個節點的守護程序,是Impala的核心元件,每個節點該程序的名稱為 impalad 。 > ps -ef|grep impalad

柯南君資料時代下的IT架構(2)訊息佇列之RabbitMQ-基礎概念詳細介紹

在實際應用中,可能會發生消費者收到Quque中的訊息,但沒有處理完成就宕機的情況,這種情況下,就可能導致資訊丟失,為了避免這種情況發生,我們可以要求消費者在消費完訊息後傳送一個回執給RabbitMQ,RabbitMQ收到訊息回執(Message acknowledge)後,才將該訊息從Quque中移除。如果R

亞馬遜AWS創新與實踐專場AWS的資料、運維與架構實戰

【CSDN現場報道】5月13日-15日,由全球最大中文IT社群CSDN主辦的“2016中國雲端計算技術大會”(Cloud Computing Technology Conference 2016,簡稱CCTC 2016)在北京新雲南皇冠假日酒店隆重舉行。本次大會

資料學習抓不住業務痛點,談什麼技術價值

在很多大資料公司裡,不論大資料專案的大小,技術部門和業務部門總有或多或少的矛盾。本文由科多大資料的張老師分享。 我們深知:技術服務於業務,業務驅動技術去發展,兩者密不可分。換句話來說,技術幫助業務去解決問題,業務給技術一個機會去證明價值,兩者相輔相成。不過在大多數公司裡,技術的存在感會弱於業務,

資源管理(資料Zookeeper、 Yarn簡介、原理

https://blog.csdn.net/wzk646795873/article/details/79583218 Zookeeper Zookeeper是一個分散式協調服務,一個leader,多個follower組成的叢集,就是為使用者的分散式應用程式提供協調服務。 Zookeep

38套資料,雲端計算,架構資料分析師,Hadoop,Spark,Storm,Kafka,人工智慧,機器學習,深度學習,專案實戰視訊教程

38套大資料,雲端計算,架構,資料分析師,Hadoop,Spark,Storm,Kafka,人工智慧,機器學習,深度學習,專案實戰視訊教程 視訊課程包含: 38套大資料和人工智慧高階課包含:大資料,雲端計算,架構,資料探勘實戰,實時推薦系統實戰,電視收視率專案實戰,實時流統計專案實戰,離線電

備受關注的未來資料世界全球資料發展的七個方向

當今科技領域發生了巨大的變化,也為大資料改善各行各業的業務、促進經濟增長打開了大門。資料能幫助組織機構更好地開展工作,大資料分析已經超越了熱門的IT趨勢標籤,成為公司業務的一部分。 大資料的行業需求預測 1、企業需求 ①傳統企業的大資料轉型。眾多傳統企業隨著網際網路化程序的不斷推進

資料入門Hadoop安裝、環境配置及檢測

目錄 1.導包Hadoop包 2.配置環境變數 3.把winutil包拷貝到Hadoop bin目錄下 4.把Hadoop.dll放到system32下 5.檢測Hadoop是否正常安裝 5.1在maven專案中檢測,將配置檔案放入resource包下 5.2然後

年薪500k資料工程師所有程式設計師做到以下幾點,年薪百萬不是夢

大資料是眼下非常時髦的技術名詞,與此同時自然也催生出了一些與大資料處理相關的職業,通過對資料的挖掘分析來影響企業的商業決策。 資料視覺化 這群人在國外被叫做資料科學家(Data Scientist),這個頭銜最早由D.J.Pati和Jeff Hammerbacher於2008年提出,他

資料,雲端計算,架構資料探勘實戰

資料探勘、大資料落地專案越來越多,以往一些分析師、工程師只是埋頭訓練模型,現在自媒體釋出平臺為這些幕後工作的人提供了展示的機會,我們在微信公號、部落格站點、社群網站有幸能看到許多案例展示,及實戰專案報告。對於正在學習和實踐資料探勘的人來說,這些資料非常有價值,可以從單個案例一窺當前大資料在不同行業落地應用的大