MPP架構海量資料分析倉庫——Greenplum介紹
一、Greenplum背景
時間回到2002年,網際網路行業經過近10年的發展,資料量正處於快速增長期:
1、傳統的主機計算模式在海量資料面前,除了造價昂貴外,在CPU計算和IO吞吐上不能滿足海量資料的計算需求;
2、傳統資料庫大多基於SMP架,縱向擴容(scale-up)模式遇到了瓶頸。
3、分散式儲存和分散式計算理論剛剛被提出來,Google的兩篇著名論文關於GFS分散式檔案系統和關於MapReduce 平行計算框架的理論引起業界的關注,
分散式計算模式在網際網路行業特別是收索引擎和分詞檢索等方面獲得了巨大成功。
Greenplum是為解決以上問題產生的可以支援scale-out橫向擴充套件的基於資料庫的MPP架構的分散式資料儲存和平行計算的工具。
二、Greenplum架構
2.1 Greenplum MPP架構
在介紹Greenplum架構前,先來了解下背景裡出現的MPP架構。所謂的MPP架構即Massively Parallel Processing大規模並行程序。
其基本特徵是由多個SMP伺服器通過節點網際網路絡連線而成,每個節點只訪問自己的本地資源(記憶體、儲存等),是一種完全無共享(Share Nothing)結構,
因而橫向擴充套件能力好,效能隨著硬體增加呈線性提升,理論上其擴充套件無限制。
可以看到,每個segment的硬體內容是獨立的,在上層通過網路進行通訊,Greenplum架構是典型的MPP架構。
Master節點儲存著global system catalog,並提供外部訪問入口。業務資料都根據分佈規則存放在Segment節點上。
2.2 Master高可用之 Master&Standby
由於Greenplum所有的並行任務都是在Segment資料節點上完成後,Master只負責生成和優化查詢計劃、派發任務、協調資料節點進行平行計算。
Master節點並不會因為因為資料壓力過大導致資源緊張成為瓶頸。
2.3 Segment高可用之映象策略
在上一期安裝初始化的時候有講到ssh協議不通會導致初始化互相copy primary檔案到別的映象主機當做mirror檔案失效報錯,現在詳細介紹下映象策略。
Greenplum有兩種映象策略,分別為group(預設策略)和spread模式。其中group模式每個Host的映象檔案都放在下一個Host上,所有計算節點形成一個環。如下圖
而spread模式是將每個Host的映象依次分散到後續Host上,如下圖
兩者的差異在於可宕機數量以及宕機後仍處在正常狀態伺服器的壓力。
以上兩圖為例,group模式下segment host1掛掉後,叢集會使用segment host2映象例項當做segment host1主例項的備選,使叢集繼續使用。
即使在segment host1掛掉後,segment host3掛掉,segment host2和segment host4的主例項和映象例項扔能支撐整個叢集正常使用;
而在spread模式下segment host1掛掉後,其他三臺任意出現故障導致服務不可用時,整個叢集會有部分節點無法訪問導致異常(例如
segment host2和segment host3掛掉綠色不可用,segment host4掛掉藍色不可用),spread對比group的優點在於,當只出現一臺機器如segment host1掛掉時,
spread能將segment host1的壓力平分到segment host2和segment host3上,而group模式會將壓力全都轉移到segment host2上。
映象模式可自動實現故障轉移功能;如何選擇映象模式,需要根據實際情況來選擇。
gpinitsystem_config初始化檔案
################################################ #### OPTIONAL MIRROR PARAMETERS ################################################ #### Base number by which mirror segment port numbers #### are calculated. MIRROR_PORT_BASE=53000 #### Base number by which primary file replication port #### numbers are calculated. REPLICATION_PORT_BASE=43000 #### Base number by which mirror file replication port #### numbers are calculated. MIRROR_REPLICATION_PORT_BASE=54000 #### File system location(s) where mirror segment data directories #### will be created. The number of mirror locations must equal the #### number of primary locations as specified in the #### DATA_DIRECTORY parameter. #declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror) declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)
參考文件:
1、Greenplum架構 https://gpdb.docs.pivotal.io/5100/admin_guide/intro/arch_overview.html
2、映象模式 https://gpdb.docs.pivotal.io/570/admin_guide/highavail/topics/g-overview-of-segment-mirroring.html
3、Master-Slave https://gpdb.docs.pivotal.io/5100/admin_guide/highavail/topics/g-overview-of-master-mirroring.html