OLAP引擎:基於Druid組件進行數據統計分析

1、Druid概述

一、Druid簡介

Druid是一款基於分佈式架構的OLAP引擎,支持數據寫入、低延時、高性能的數據分析,具備優秀的數據聚合能力與實時查詢能力。在大數據分析、實時計算、監控等領域都有相關的應用場景,是大數據基礎架構建設中重要組件。git

與如今相對熱門的Clickhouse引擎相比,Druid對高併發的支持相對較好和穩定,可是Clickhouse在任務隊列模式中的數據查詢能力十分出色,可是對高併發支持不夠友好,須要作好不少服務監控和預警。大數據組件中OLAP引擎的選型有不少,在數據的查詢引擎層一般都具備兩種或者以上的OLAP引擎,選擇合適的組件解決業務需求是優先原則。github

二、基本特色

分佈式sql

分佈式的OLAP數據引擎,數據分佈在多個服務節點中,當數據量激烈增加的時候,能夠經過增長節點的方式進行水平擴容,數據在多個節點相互備份,若是單個節點出現故障,則可基於Zookeeper調度機制從新構建數據,這是分佈式OLAP引擎的基本特色,在以前Clickhouse系列中也說過這個策略。數據庫

聚合查詢json

主要針對時間序列數據提供低延時數據寫入和快速聚合查詢,時序數據庫特色寫入便可查詢,Druid在數據寫入時就會對數據預聚合,進而減小原始數據量,節省存儲空間並提高查詢效率;數據聚合粒度能夠基於特定策略,例如分鐘、小時、天等。必需要強調Druid適合數據分析場景,並不適合單條數據主鍵查詢的業務。vim

列式存儲架構

Druid面向列的存儲方式,而且能夠在集羣中進行大規模的並行查詢,這意味在只須要加載特定查詢所須要的列狀況下,查詢速度能夠大幅度提高。併發

三、基礎架構

OLAP引擎:基於Druid組件進行數據統計分析

統治者節點負載均衡

即Overlord-Node,任務的管理節點,進程監視MiddleManager進程,而且是數據攝入Druid的控制器,負責將提取任務分配給MiddleManagers並協調Segement發佈。框架

協調節點

即Coordinator-Node,主要負責數據的管理和在歷史節點上的分佈,協調節點告訴歷史節點加載新數據、卸載過時數據、複製數據、和爲了負載均衡移動數據。

中間管理節點

即MiddleManager-Node,攝入實時數據,已生成Segment數據文件,能夠理解爲overlord節點的工做節點。

歷史節點

即Historical-Node,主要負責歷史數據存儲和查詢,接收協調節點數據加載與刪除指令,historical節點是整個集羣查詢性能的核心所在,由於historical會承擔絕大部分的segment查詢。

查詢節點

即Broker-Node,扮演着歷史節點和實時節點的查詢路由的角色,接收客戶端查詢請求,並將這些查詢轉發給Historicals和MiddleManagers,當Brokers從這些子查詢中收到結果時,它們會合並這些結果並將它們返回給調用者。

數據文件存儲庫

即DeepStorage,存放生成的Segment數據文件。

元數據庫

即MetadataStorage,存儲Druid集羣的元數據信息,好比Segment的相關信息。

協調中間件

即Zookeeper,爲Druid集羣提供協調服務,如內部服務的監控,協調和領導者選舉。

2、Druid部署

一、安裝包

imply對druid作了集成,並提供從部署到配置到各類可視化工具的完整的解決方案。

https://static.imply.io/release/imply-2.7.10.tar.gz

解壓並從新命名。

[root@hop01 opt]# tar -zxvf imply-2.7.10.tar.gz
[root@hop01 opt]# mv imply-2.7.10 imply2.7

二、Zookeeper配置

配置Zookeeper集羣各個節點,逗號分隔。

[root@hop01 _common]# cd /opt/imply2.7/conf/druid/_common
[root@hop01 _common]# vim common.runtime.properties 
druid.zk.service.host=hop01:2181,hop02:2181,hop03:2181

關閉Zookeeper內置校驗而且不啓動。

[root@hop01 supervise]# cd /opt/imply2.7/conf/supervise
[root@hop01 supervise]# vim quickstart.conf

註釋掉以下內容:

OLAP引擎:基於Druid組件進行數據統計分析

三、服務啓動

依次啓動相關組件:Zookeeper、Hadoop相關組件,而後啓動imply服務。

[root@hop01 imply2.7]# /opt/imply2.7/bin/supervise -c /opt/imply2.7/conf/supervise/quickstart.conf

注意虛擬機內存問題,在以下的目錄中Druid各個組件的JVM配置,條件不容許的話適當拉低,而且要拉高JVM相關內存參數。

[root@hop01 druid]# cd /opt/imply2.7/conf/druid

啓動默認端口:9095,訪問界面以下:

OLAP引擎:基於Druid組件進行數據統計分析

3、基礎用法

一、數據源配置

選擇上述Http的方式,基於imply提供的JSON測試文件。

https://static.imply.io/data/wikipedia.json.gz

OLAP引擎:基於Druid組件進行數據統計分析

二、數據在線加載

執行上述:Sample and continue

OLAP引擎:基於Druid組件進行數據統計分析

樣本數據加載配置:

OLAP引擎:基於Druid組件進行數據統計分析

數據列的配置:

OLAP引擎:基於Druid組件進行數據統計分析

配置項整體概覽:

OLAP引擎:基於Druid組件進行數據統計分析

最後執行數據加載任務便可。

三、本地樣本加載

[root@hop01 imply2.7]# bin/post-index-task --file quickstart/wikipedia-index.json

這樣讀取兩份數據腳本。

四、數據立方體

數據加載完成後,查看可視化數據立方體:

OLAP引擎:基於Druid組件進行數據統計分析

數據立方體中提供一些基礎的視圖分析,能夠在多個維度上拆分數據集並進行數據分析:

OLAP引擎:基於Druid組件進行數據統計分析

五、SQL查詢

能夠基於可視化工具對Druid進行SQL查詢,語法與經常使用規則幾乎同樣:

SELECT COUNT(*) AS Edits FROM wikipedia;
SELECT * FROM wikipedia WHERE "__time" BETWEEN TIMESTAMP '開始' AND TIMESTAMP '結束';
SELECT page, COUNT(*) AS Edits FROM wikipedia GROUP BY page LIMIT 2;
SELECT * FROM wikipedia ORDER BY __time DESC LIMIT 5;
SELECT * FROM wikipedia LIMIT 3;

OLAP引擎:基於Druid組件進行數據統計分析

六、Segment文件

文件位置:

/opt/imply2.7/var/druid/segments/wikipedia/

Druid基於Segment實現對數據的切割,數據按時間的時序分佈,將不一樣時間範圍內的數據存儲在不一樣的Segment數據塊中,按時間範圍查詢數據時,能夠避免全數據掃描效率能夠極大的提升,同時面向列進行數據壓縮存儲,提升分析的效率。

4、源代碼地址

GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent

OLAP引擎:基於Druid組件進行數據統計分析

往期推薦

OLAP查詢引擎,ClickHouse集羣化管理
HBase集羣環境搭建和應用案例
搜索引擎框架,ElasticSearch集羣應用
分佈式NoSQL系統,Cassandra集羣管理

相關文章
相關標籤/搜索