實時OLAP(一) Apache Pinot介紹

一、業務需求

       微博萬億級別數據,實時攝取,實時數據多維分析,低延時響應

二、調研實時OLAP

        clickhouse, druid,pinot,感覺這篇文章寫得不錯:https://medium.com/@leventov/comparison-of-the-open-source-olap-systems-for-big-data-clickhouse-druid-and-pinot-8e042a5ed1c7

       我們覺得pinot更適合我們的需求,於是對pinot進行深入調研,包括部署,數據攝取,數據查詢等

三、pinot介紹

       https://pinot.apache.org

       https://github.com/apache/incubator-pinot

       Pinot 是一個實時分佈式的 OLAP 數據存儲和分析系統。使用它實現低延遲可伸縮的實時分析。Pinot 從離線數據源(包括 Hadoop 和各類文件)和在線數據源(如 Kafka)中攫取數據進行分析。Pinot 被設計是可以進行水平擴展的。

       Pinot 特別適合這樣的數據分析場景:查詢具有大量維度和指標的時間序列數據,分析模型固定,數據只追加以及低延遲,以及分析結果可查詢。

      關鍵特性:

  • 面向列的數據庫,具有各種壓縮方案,如運行長度,固定位長度
  • 可插拔索引技術 - 排序索引,位圖索引,倒排索引
  • 能夠根據查詢和段元數據優化查詢/執行計劃。
  • 幾乎實時從流中攝取和從Hadoop批量攝取
  • SQL類似於支持選擇,聚合,過濾,分組依據,對數據進行不同查詢的語言。
  • 支持多值字段
  • 水平可擴展和容錯

      Pinot存在一定的侷限性:

  • Pinot不是數據庫的替代品,即它不能用作真值存儲源,不能改變數據
  • 不是搜索引擎的替代品,即全文搜索,不支持相關性
  • 查詢不能跨越多個表。

Pinot架構

         Pinot核心組件及組件的主要功能

         1、controller

               管理集羣中的節點

                對Table和Segment的創建、更新和刪除操作的處理

                計算Table和Segment在server上的分配

          2、broker  

                 它接收客戶端的查詢請求,並且將路由到多個服務上(根據路由策略), 合併接收的查詢結果並返回給客戶端。               

           3、server 它保存一個或者多個物理的Segment,職責包括:

                 當被分配一個預先創建的segment,下載並且裝載這個Segment,當被分配一個Kafka Topic,從kafka的partion的一個子集中消費數據

                 執行查詢請求並將結果返回給broker

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章