文章目錄
前言
Druid介紹
主要特性
基礎概念
資料格式
資料攝入
資料存盤
資料查詢
查詢型別
架構
運維
OLAP方案對比
使用場景
使用建議
參考
近期主題
前言
專案早期、資料(報表分析)的生產、存盤和獲取業務,MySQL基本上可以滿足需要,但是隨著業務的快速增長,資料量翻至億為單位時,MySQL無法滿足例如:快速實時回傳“分組+聚合計算+排序聚合指標”查詢需求,記得還是2017年之后,對當時的幾款OLAP進行了調研,用線上資料訓練,當時Druid在性能和功能上基本上能夠滿足需要,下面介紹一下Apache Druid,
Druid介紹
Apache Druid 是一個高性能實時分析資料庫,在復雜的海量資料下進行互動式實時資料展現的OLAP工具,能夠處理TB級別資料,毫秒級回應,目前國內在使用的公司有:阿里、滴滴、知乎、360、eBay,Hulu等,官方網址:http://druid.io
主要特性
- 開源、列式存盤,預聚合
- 實時流式和批量資料攝入
- 靈活的資料模式、支持SQL查詢
- 擴展方便,容易運維
- TB,PB級別的資料處理
基礎概念
資料格式
資料源:datasource,datasource的結構有:時間列(timestamp)、維度列(Dimension)和指標列(Metric)
時間列:將時間相近的一些資料聚合在一起,查詢的時候指定時間范圍
維度列:標識一些統計的維度,比如:名稱、類別等
指標列:用于聚合和計算的列,比如:訪問總數、合計金額等
|
timestamp |
demensions |
metric |
||||
|
date |
userid |
username |
age |
sex |
visits |
costs |
|
2020-01-01T00:00:00Z |
100001 |
張三 |
20 |
男 |
201 |
20.10 |
|
2020-01-01T00:00:00Z |
100002 |
李四 |
21 |
男 |
160 |
16.00 |
|
2020-01-01T00:00:00Z |
100003 |
王五 |
20 |
女 |
100 |
10.00 |
資料攝入
同時支持流式和批量資料攝入,通常通過像 Kafka 這樣的訊息總線(加載流式資料)或通過像 HDFS 這樣的分布式檔案系統(加載批量資料)來連接原始資料源,
?
Druid 通過 Indexing 處理將原始資料以 segment 的方式存盤在資料節點,segment 是一種查詢優化的資料結構,
?
資料存盤
Druid 采用列式存盤,根據不同列的資料型別(string,number 等),Druid 對其使用不同的壓縮和編碼方式,Druid 也會針對不同的列型別構建不同型別的索引,
類似于檢索系統,Druid 為 string 列創建反向索引,以達到更快速的搜索和過濾,類似于時間序列資料庫,Druid 基于時間對資料進行智能磁區,以達到更快的基于時間的查詢,
不像大多數傳統系統,Druid 可以在資料攝入前對資料進行預聚合,這種預聚合操作被稱之為 rollup,這樣就可以顯著的節省存盤成本,
資料查詢
支持兩種查詢:JSON-HTTP,SQL兩種方式
查詢型別
Timeseries:基于時間范圍查詢的型別
TopN:基于單維度的排名查詢
GroupBy:基于多維度的分組查詢
架構
?
運維
Druid是非常健壯的系統,Druid 擁有資料副本、獨立服務、自動資料備份和滾動更新,以確保長期運行,并保證資料不丟失,
OLAP方案對比
|
|
Druid |
Kylin |
Elasticsearch |
Spark SQL |
|
資料規模 |
超大 |
超大 |
中等 |
超大 |
|
查詢效率 |
高 |
高 |
中等 |
低 |
|
并發度 |
高 |
高 |
高 |
低 |
|
SQL支持 |
中 |
高 |
中 |
高 |
|
靈活度 |
中 |
低 |
高 |
高 |
Druid:是一個實時處理時序資料的OLAP資料庫,因為它的索引首先按照時間分片,查詢的時候也是按照時間線去路由索引,
Kylin:核心是Cube,Cube是一種預計算技術,基本思路是預先對資料作多維索引,查詢時只掃描索引而不訪問原始資料從而提速,
ES:最大的特點是使用了倒排索引解決索引問題,根據研究,ES在資料獲取和聚集用的資源比在Druid高,
Spark SQL:基于Spark平臺上的一個OLAP框架,基本思路是增加機器來并行計算,從而提高查詢速度,
使用場景
- 廣告資料分析
- 風控分析
- 服務器指標存盤
- 應用性能指標
- 實時在線分析系統 OLAP
- 實時報表分析
- 離線+實時資料源
- 行為資料分析
使用建議
- 時序化資料:所有行記錄中必須有日期指標
- OLAP并發有限,不適合OLTP查詢,建議首次回源加Cache
- 目前不支持JOIN操作,不支持資料更新
- 離線資料替換前一天實時資料
- 分頁支持的不夠完善
另外、Druid在專案中已經投產多年,用OLAP方案解決業務上的問題,整理技術點為了方便相似業務同學參考和使用,
參考
https://druid.apache.org/docs/latest/design/
近期主題:
-
Druid在資料分析需求中的學習和應用
-
Druid多種應用場景的實戰
-
定時任務到分布式服務的演變
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/16363.html
標籤:大數據
上一篇:如何解決安裝OracleXE時出現“此產品的配置資訊已損壞,請聯系專業人員技術支持”這個問題
下一篇:HBase協處理器加載的三種方式
