Greenplum簡介


Greenplum能做什么?

  • 數倉 / OLAP / 即席查詢
  • 混合負載 / HTAP
  • 流數據
  • 集成數據分析
  • 數據庫內嵌機器學習
  • 現代 SQL

核心架構

  • 架構圖

    img

  • Master Host:

    • 主節點, 負責協調整個集群
    • 沒有數據, 只有用戶的元數據
  • Standby Master: 備份主

  • Segment Host:

    • 每個Segment都是一個單節點的PostgreSQL數據庫。
    • 包含用戶的實際數據, 會等待master給它分配實際任務, 然后進行相互協調執行。
    • 每個Segment對應在另外一個節點上會有一個鏡像(mirror), 當這台Segment掛了之后, 它的鏡像就會自動提升為primary, 從而實現高可用。
  • 可以隨着業務的擴充進行線性擴展

  • 每台機器都是獨立的, 機器之間通過Interconnect進行網絡通訊, 因為又被稱為MPP無共享架構。

數據分布

  • 多種分布策略:

    • Hash, 隨機, 復制表等
  • 最重要的策略和目標是均勻分布: 每個節點 1/n 數據

    1579322974170

多級分區

1579323128337

多模存儲 / 多態存儲

  • 通常情況下, 數據價值隨着時間越來越低, 所以會有不同的對應處理模式。
  • 就比如說一張銷售表:
    • 最近3個月的數據, 我們可能要做的是對數據的完善及更新
    • 距今3個月到1年的數據, 我們可能做的最多的是做一些查詢, 聚集, 報表
    • 1年前+數據, 訪問較少。
  • 對應存儲模式:
    • 1年前+數據:
      • 采用外部表技術, 數據不放在Greenplum中, 比如hdfs, amazon S3中。
      • 無縫查詢所有數據:
        • Text, CSV, Binary, Avro, Parquet, ORC格式
    • 距今3個月到1年的數據:
      • 使用列存儲, 更適合壓縮(不同列可以使用不同壓縮方式: gzip, quickz, delta, RLE, zstd), 查詢列子集時速度快。
    • 最近3個月的數據:
      • 使用行存儲, 適合OLTP業務, 適合頻繁更新或者訪問大部分字段的場景。

查詢支持

  • Apache ORCA: 專為復雜查詢而生的優化器

    img

    • 可以做到比較好的動態分區裁剪
    • 處理比較復雜的子查詢, 或CTE(是一個命名的臨時結果集,僅在單個SQL語句(例如SELECT,INSERT或DELETE)的執行范圍內存在)
  • 數據shuffle

  • 其他技術:

    • 高效壓縮算法
    • 多階段聚集
    • 復制表
    • Unlogged table
    • 物化視圖
    • 一致性hash
    • 在線擴容
    • 安全性

混合負載 / HTAP

  • OLTP 優化技術

    • 全局死鎖檢測 (GDD): 6版本之前用表鎖, 優化有使用行鎖。
    • 鎖優化: 有一個鎖競爭比較嚴重, 優化。
    • 事務優化
    • 復制表
    • 多模存儲
    • 靈活索引
    • OLTP 友好的優化器
    • 內核升級: PostgreSQL 9.4
  • 資源管理

    特性 資源組(Resource Group) 資源隊列(Resource Queue)
    並發控制 事務級別 語句級別
    死鎖 極端情況下會出現
    CPU管理 基於比例、基於cgroup 基於粗粒度的優先級
    CPU 空閑利用率 可以充分利用空閑CPU 部分利用
    內存限制 精細 粗粒度
    組內內存共享 T F
    動態修改資源配置 T 部分
    排隊 無並發槽位或者內存配額時 無並發槽位時
    管理DDL、Utility語句 T F
    Segment級別監控管理 T F
    基於規則的資源管理 T F

細粒度多級內存管理

1579325814442

企業案例

1579326128516

  • 如果對TP業務不是追求極致, 可以考慮Greenplum。

流數據(准實時)

  • Greenplum Kafka Connector

    1579326383748

    • 該組件的目的是將Kafka Topic中 partition的數據高效導入到Greenplum中。
    • 可以看到最終gpss會將數據並行地導入到每個Segment中而不需要通過master, 效率較高。

集成數據分析

  • 各種數據類型: 結構化、半結構化、非結構化

    1579327104923

數據融合

1579327153023

  • 數據全都放到Greenplum中的話代價還是很大的。
  • 過去會將全部數據從別的平台拉取到Greenplum, 涉及比較復雜的etl過程
  • 4版本后的數據融合功能, 不需要拉取數據到Greenplum, 只要在Greenplum上寫SQL就可以查詢存儲在不同數據中的數據。

PXF 架構

“PXF架构”的图片搜索结果

  • 可以在Greenplum中定義一個外部表, 此外部表通過PXF協議指定到hadoop, hive, hbase, 數據庫s3等。
  • 我們只需要在Greenplum上寫一個SQL, 底層就會自動去對應的存儲系統中拿取數據。
  • 如果底層是Hive的話, PXF還可以做到謂詞下推

基於 SQL 的數據庫內嵌機器學習

  • 數據量越大, 模型精度越大。

  • SAS: 需要對數據進行抽樣后再訓練, 會損失部分精度, 只能用一個節點進行訓練。

  • 希望對全量數據進行運算, 將算法內嵌到數據庫中, 可以使用數據庫的並行計算能力。

  • apache madlib

    “madlib架构”的图片搜索结果

    • 在每個Segment上集成成成Keras或者tensorFlow, 可以使用每個節點上的GPU資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM