Greenplum介紹

一、Greenplum的發(fā)展歷史

Greenplum的發(fā)展可以分為下面6個(gè)階段:


圖 1 Greenplum時(shí)間線

Postgres關(guān)系型數(shù)據(jù)庫。Postgres是UC Berkeley開發(fā)的關(guān)系型數(shù)據(jù)庫,現(xiàn)已更名為PostgreSQL。PostgerSQL官網(wǎng)介紹自己是最先進(jìn)的數(shù)據(jù)庫,有強(qiáng)大的SQL支持能力,擴(kuò)展性好,并且支持空間擴(kuò)展。通過空間數(shù)據(jù)引擎PostGIS的支持可以存儲和操作空間數(shù)據(jù)。

SQL queries on Big Data。Greenplum初步成型,由于數(shù)據(jù)越存越多,如何在大量數(shù)據(jù)中繼續(xù)使用SQL來進(jìn)行查詢成了一個(gè)需要解決的問題。Greenplum開發(fā)者在X86架構(gòu)和Postgres數(shù)據(jù)庫的基礎(chǔ)上,結(jié)合Postgres社區(qū)和應(yīng)用生態(tài)使用MPP架構(gòu)將Postgres實(shí)例組織起來,并通過MPP后端來實(shí)現(xiàn)存儲和查詢。

Pivotal商業(yè)公司。Emc2公司將Greenplum與分布式緩存GemFile一起結(jié)合形成了一款專注于OLAP系統(tǒng)的數(shù)據(jù)引擎產(chǎn)品,并以這個(gè)產(chǎn)品為核心組建了新的公司Pivotal。

收購MoreVRP。最初的Greenplum希望對每一次query操作都能做到盡可能的快,這樣使得所有的資源都被一次query占用。然而當(dāng)并發(fā)多的時(shí)候,會造成query效果變差。因此Greenplum最初將query按類型劃分到了不同的隊(duì)列,然后按優(yōu)先級給隊(duì)列分配資源,進(jìn)而解決了這個(gè)問題。但是因?yàn)閝uery是在不斷變動(dòng)的,這時(shí)候這種策略也需要不斷調(diào)整,因此Pivotal收購了一家專注于動(dòng)態(tài)配置數(shù)據(jù)庫的公司MoreVRP。

發(fā)布HAWQ。由于市場上越來越多的客戶將數(shù)據(jù)存放在HDFS上,基于Hadoop的Hive和Impala帶給了Greenplum也受到了很大的沖擊。Pivotal因此推出了一個(gè)處理HDFS上數(shù)據(jù)的解決方案HAWQ,但是HAWQ在HDFS上使用的是Greenplum專利格式來存儲數(shù)據(jù),其他的軟件不能對這個(gè)格式進(jìn)行操作,并不方便。

開源Greenplum。2015年,Pivotal公司擁抱了開源社區(qū),將Greenplum開源。

二、Greenplum的幾個(gè)關(guān)鍵詞

1、shared-nothing

? Shared Everthting:一般是針對單個(gè)主機(jī),完全透明共享CPU/MEMORY/IO,并行處理能力差,典型的代表SQLServer。 shared-everything架構(gòu)優(yōu)點(diǎn)很明顯,但是網(wǎng)絡(luò),硬盤很容易就會成為系統(tǒng)瓶頸。

? Shared Disk:各個(gè)處理單元使用自己的私有 CPU和Memory,共享磁盤系統(tǒng)。典型的代表Oracle Rac, 它是數(shù)據(jù)共享,可通過增加節(jié)點(diǎn)來提高并行處理的能力,擴(kuò)展能力較好。其類似于SMP(對稱多處理)模式,但是當(dāng)存儲器接口達(dá)到飽和的時(shí)候,增加節(jié)點(diǎn)并不能獲得更高的性能 。

? ? Shared Nothing:各個(gè)處理單元都有自己私有的CPU/內(nèi)存/硬盤等,不存在共享資源,各處理單元之間通過協(xié)議通信,并行處理和擴(kuò)展能力更好。各節(jié)點(diǎn)相互獨(dú)立,各自處理自己的數(shù)據(jù),處理后的結(jié)果可能向上層匯總或在節(jié)點(diǎn)間流轉(zhuǎn)。Share-Nothing架構(gòu)在擴(kuò)展性和成本上都具有明顯優(yōu)勢。

1

2

3

2、MPP

? 大規(guī)模并行處理系統(tǒng)是由許多松耦合處理單元組成的,借助MPP這種高性能的系統(tǒng)架構(gòu),Greenplum可以將TB級的數(shù)據(jù)倉庫負(fù)載分解,并使用所有的系統(tǒng)資源并行處理單個(gè)查詢。

1

3、MVCC

? 與事務(wù)型數(shù)據(jù)庫系統(tǒng)通過鎖機(jī)制來控制并發(fā)訪問的機(jī)制不同, GPDB使用多版本控制(Multiversion Concurrency Control/MVCC)保證數(shù)據(jù)一致性。 這意味著在查詢數(shù)據(jù)庫時(shí),每個(gè)事務(wù)看到的只是數(shù)據(jù)的快照,其確保當(dāng)前的事務(wù)不會看到其他事務(wù)在相同記錄上的修改。據(jù)此為數(shù)據(jù)庫的每個(gè)事務(wù)提供事務(wù)隔離。

? ? MVCC以避免給數(shù)據(jù)庫事務(wù)顯式鎖定的方式,最大化減少鎖爭用以確保多用戶環(huán)境下的性能。在并發(fā)控制方面,使用MVCC而不是使用鎖機(jī)制的最大優(yōu)勢是, MVCC對查詢(讀)的鎖與寫的鎖不存在沖突,并且讀與寫之間從不互相阻塞。

1

2

3

三、Greenplum架構(gòu)

Greenplum主要由Master節(jié)點(diǎn)、Segment節(jié)點(diǎn)、interconnect三大部分組成。Greenplum master是Greenplum數(shù)據(jù)庫系統(tǒng)的入口,接受客戶端連接及提交的SQL語句,將工作負(fù)載分發(fā)給其它數(shù)據(jù)庫實(shí)例(segment實(shí)例),由它們存儲和處理數(shù)據(jù)。Greenplum interconnect負(fù)責(zé)不同PostgreSQL實(shí)例之間的通信。Greenplum segment是獨(dú)立的PostgreSQL數(shù)據(jù)庫,每個(gè)segment存儲一部分?jǐn)?shù)據(jù)。大部分查詢處理都由segment完成。

Master節(jié)點(diǎn)不存放任何用戶數(shù)據(jù),只是對客戶端進(jìn)行訪問控制和存儲表分布邏輯的元數(shù)據(jù)


Segment節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的存儲,可以對分布鍵進(jìn)行優(yōu)化以充分利用Segment節(jié)點(diǎn)的io性能來擴(kuò)展整集群的io性能

存儲方式可以根據(jù)數(shù)據(jù)熱度或者訪問模式的不同而使用不同的存儲方式。一張表的不同數(shù)據(jù)可以使用不同的物理存儲方式:行存儲、列存儲、外部表

3.1 大規(guī)模數(shù)據(jù)存儲

(1)Greenplum數(shù)據(jù)庫通過將數(shù)據(jù)分布到多個(gè)節(jié)點(diǎn)上來實(shí)現(xiàn)規(guī)模數(shù)據(jù)的存儲。數(shù)據(jù)庫的瓶頸經(jīng)常發(fā)生在I/O方面,數(shù)據(jù)庫的諸多性能問題最終總能歸罪到I/O身上,久而久之,IO瓶頸成為了數(shù)據(jù)庫性能的永恒的話題。

(2)Greenplum采用分而治之的辦法,將數(shù)據(jù)規(guī)律的分布到節(jié)點(diǎn)上,充分利用Segment主機(jī)的IO能力,以此讓系統(tǒng)達(dá)到最大的IO能力(主要是帶寬)。

(3)在Greenplum中每個(gè)表都是分布在所有節(jié)點(diǎn)上的。Master節(jié)點(diǎn)首先通過對表的某個(gè)或多個(gè)列進(jìn)行hash運(yùn)算,然后根據(jù)hash結(jié)果將表的數(shù)據(jù)分布到Segment節(jié)點(diǎn)中。整個(gè)過程中Master節(jié)點(diǎn)不存放任何用戶數(shù)據(jù),只是對客戶端進(jìn)行訪問控制和存儲表分布邏輯的元數(shù)據(jù)。

圖 2 Greenplum存儲結(jié)構(gòu)

Greenplum提供稱為“多態(tài)存儲”的靈活存儲方式。多態(tài)存儲可以根據(jù)數(shù)據(jù)熱度或者訪問模式的不同而使用不同的存儲方式。一張表的不同數(shù)據(jù)可以使用不同的物理存儲方式。支持的存儲方式包含:

行存儲:行存儲是傳統(tǒng)數(shù)據(jù)庫常用的存儲方式,特點(diǎn)是訪問比較快,多列更新比較容易。

列存儲:列存儲按列保存,不同列的數(shù)據(jù)存儲在不同的地方(通常是不同文件中)。適合一次只訪問寬表中某幾個(gè)字段的情況。列存儲的另外一個(gè)優(yōu)勢是壓縮比高。

外部表:數(shù)據(jù)保存在其他系統(tǒng)中例如HDFS,數(shù)據(jù)庫只保留元數(shù)據(jù)信息。

3.2 并行查詢計(jì)劃和執(zhí)行

下圖為一個(gè)簡單SQL語句,從兩張表中找到2008年的銷售數(shù)據(jù)。圖中右邊是這個(gè)SQL的查詢計(jì)劃。從生成的查詢計(jì)劃樹中看到有三種不同的顏色,顏色相同表示做同一件事情,我們稱之為分片/切片(Slice)。最下層的橙色切片中有一個(gè)重分發(fā)節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)將本節(jié)點(diǎn)的數(shù)據(jù)重新分發(fā)到其他節(jié)點(diǎn)上。中間綠色切片表示分布式數(shù)據(jù)關(guān)聯(lián)(HashJoin)。最上面切片負(fù)責(zé)將各個(gè)數(shù)據(jù)節(jié)點(diǎn)收到的數(shù)據(jù)進(jìn)行匯總。


然后看看這個(gè)查詢計(jì)劃的執(zhí)行。主節(jié)點(diǎn)(Master)上的調(diào)度器(QD)會下發(fā)查詢?nèi)蝿?wù)到每個(gè)數(shù)據(jù)節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)收到任務(wù)后(查詢計(jì)劃樹),創(chuàng)建工作進(jìn)程(QE)執(zhí)行任務(wù)。如果需要跨節(jié)點(diǎn)數(shù)據(jù)交換(例如上面的HashJoin),則數(shù)據(jù)節(jié)點(diǎn)上會創(chuàng)建多個(gè)工作進(jìn)程協(xié)調(diào)執(zhí)行任務(wù)。不同節(jié)點(diǎn)上執(zhí)行同一任務(wù)(查詢計(jì)劃中的切片)的進(jìn)程組成一個(gè)團(tuán)伙(Gang)。數(shù)據(jù)從下往上流動(dòng),最終Master返回給客戶端。


3.3 并行數(shù)據(jù)加載

(1)并行加載技術(shù)充分利用分布式計(jì)算和分布式存儲的優(yōu)勢,保證發(fā)揮出每一塊Disk的I/O資源

(2)并行加載比串行加載,速度提高40-50倍以上,減少ETL窗口時(shí)間

(3)增加Segment和ETL Server,并行加載速度呈線性增長


四、應(yīng)用生態(tài)


圖3 Greenplum應(yīng)用生態(tài)

在標(biāo)準(zhǔn)的X86平臺上,Greenplum與其它異構(gòu)數(shù)據(jù)庫、BI工具、挖掘預(yù)測工具、ETL工具和J2EE/.NET應(yīng)用程序均有良好的連通性。

利用Greenplum外部表技術(shù),映射Hadoop集群中的HDFS、HIVE、HBASE 等多種格式數(shù)據(jù),使用ANSI SQL訪問,數(shù)據(jù)無需中間落地

Greenplum對亞馬遜S3的全面讀寫支持

Pivotal又剛剛宣布了Greenplum數(shù)據(jù)庫對微軟Azure云平臺的支持,用戶可以在微軟Azure云平臺上方便地使用到Greenplum

五、Greenplum特點(diǎn)

借助MPP,Greenplum在大型數(shù)據(jù)集上執(zhí)行復(fù)雜SQL分析的速度比很多解決方案都要快。Greenplum也帶來了其它開源方案中沒有的數(shù)據(jù)管理質(zhì)量特性、升級和擴(kuò)展能力。同時(shí),Greenplum也降低了大規(guī)模實(shí)時(shí)數(shù)據(jù)分析的門檻,相比于 Map-Reduce,SQL語法簡單,功能強(qiáng)大,易上手,使用和開發(fā)成本低,易于對接其他第三方數(shù)據(jù)分析工具。

標(biāo)準(zhǔn)SQL接口,比MapReduce接入更方便

完整的分布式事務(wù)能力,確保強(qiáng)數(shù)據(jù)一致性

近乎線性的在線擴(kuò)展能力

高并發(fā)數(shù)據(jù)加載技術(shù)

高靈活的行、列以及混合存儲及壓縮技術(shù)

高可用技術(shù)方案

支持多方式的授權(quán)管理及審計(jì),表級別粒度

豐富的生態(tài)系統(tǒng),便捷對接hadoop等

---------------------

作者:Du_咳咳

來源:CSDN

原文:https://blog.csdn.net/dcpkeke/article/details/79003170

版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容