Kylin、druid、presto、impala四種即席查詢對比


一、什么是即席查詢

即席查詢是用戶根據自己的需求,靈活的選擇查詢條件,系統根據用戶的選擇生成相應的統計報表。普通查應用查詢是定制開發的,即席查詢是用戶自定義查詢條件

理解:快速的執行自定義SQL(可能無法提前運算和預測)

重點關注:數據存儲格式和架構

 

二、Kylin

1、定義:Apache kylin是一個開源分布式分析引擎、提供Hadoop、Spark之上的SQL

查詢接口及多維分析(OLAP)能力,可以再亞秒內查詢巨大的Hive表

(還可以與BI工具集成ODBC、JDBC、RestAPI、還有自帶的Zepplin插件,來訪問Kylin服務)

2、架構

Kylin架構

a、REST 服務層:應用程序開發的入口點

b、查詢引擎層:Cube准備就緒后,與系統中的其他組件進行交互,從而向用戶返回對應的結果

c、路由層:將解析的SQL生成的執行計划轉換成Cube緩存的查詢,cube通過預計算緩存在hbase中,這些操作可以在毫秒級完成,還有一些操作使用的原始查詢,這部分延遲較高(麒麟高版本中已刪除該層)

d、元數據管理工具:kylin的元數據管理存儲在hbase中

e、任務引擎:處理所有離線任務:包括shell腳本、javaAPI以及MapReduce任務等等

三、impala

1、定義:Cloudera公司推出,提供對HDFS、Hbase數據的高性能、低延遲的交互式SQL查詢功能。基於Hive,使用內存計算,兼顧數據倉庫、具有實時、批處理、多並發等優點。

2、架構

Impala架構

從上圖可以看出,Impala自身包含三個模塊:Impalad、Statestore和Catalog,除此之外它還依賴hive Metastore和HDFS

1) Impalad:
接收client的請求、Query執行並返回給中心協調節點。
子節點上的守護進程,負責向statestore保持通信,匯報工作。
2) Catalog:
分發表的元數據信息到各個impalad中;
接收來自statestore的所有請求。
3) Statestore:
負責收集分布在集群中各個impalad進程的資源信息、各節點健康狀況,同步節點信息;
負責query的協調調度。

3、存儲和架構

 

四、Druid

1、定義

Druid 是一個分布式的支持實時分析的數據存儲系統,具有以下幾個特點

  • 亞秒級 OLAP 查詢,包括多維過濾、Ad-hoc 的屬性分組、快速聚合數據等等。
  • 實時的數據消費,真正做到數據攝入實時、查詢結果實時。
  • 高效的多租戶能力,最高可以做到幾千用戶同時在線查詢。
  • 擴展性強,支持 PB 級數據、千億級事件快速處理,支持每秒數千查詢並發。
  • 極高的高可用保障,支持滾動升級。

實時數據分析是 Apache Druid 最典型的使用場景。該場景涵蓋的面很廣,例如:

  • 實時指標監控
  • 推薦模型
  • 廣告平台
  • 搜索模型

這些場景的特點都是擁有大量的數據,且對數據查詢的時延要求非常高。在實時指標監控中,系統問題需要在出現的一刻被檢測到並被及時給出報警。在推薦模型中,用戶行為數據需要實時采集,並及時反饋到推薦系統中。用戶幾次點擊之后系統就能夠識別其搜索意圖,並在之后的搜索中推薦更合理的結果

 

五、Presto

1、定義

Presto是一個開源的分布式SQL查詢引擎,適用於交互式分析查詢,數據量支持GB到PB字節。注:雖然Presto可以解析SQL,但它不是一個標准的數據庫。不是MySQL、Oracle的代替品,也不能用來處理在線事務(OLTP)

應用場景

Presto支持在線數據查詢,包括Hive,關系數據庫(MySQL、Oracle)以及專有數據存儲。一條Presto查詢可以將多個數據源的數據進行合並,可以跨越整個組織進行分析。

Presto主要用來處理響應時間小於1秒到幾分鍾的場景。

總結:

1.Druid:是一個實時處理時序數據的OLAP數據庫,因為它的索引首先按照時間分片,查詢的時候也是按照時間線去路由索引。

2.Kylin:核心是Cube,Cube是一種預計算技術,基本思路是預先對數據作多維索引,查詢時只掃描索引而不訪問原始數據從而提速。

3.Presto:它沒有使用Mapreduce,大部分場景下比HIVE塊一個數量級,其中的關鍵是所有的處理都在內存中完成。

4.Impala:基於內存計算,速度快,支持的數據源沒有Presto多。

5.SparkSQL:是spark用來處理結構化的一個模塊,它提供一個抽象的數據集DataFrame,並且是作為分布式SQL查詢引擎的應用。它還可以實現Hive on Spark,hive里的數據用sparksql查詢。

6.框架選型:(1)從超大數據的查詢效率來看:

Druid>Kylin>Presto>SparkSQL

(2)從支持的數據源種類來講:

Presto>SparkSQL>Kylin>Druid

 


免責聲明!

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



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