Druid簡介

參考書目《Druid實時大數據分析原理與實踐》sql

1.druid概覽

Druid,中文名是德魯伊。Druid是一個分佈式的支持實時分析的數據存儲系統,Druid的設計爲分析而生,是一個分佈式的數據分析平臺。在處理數據的實時性、規模上相比傳統OLAP系統有了顯著提高。官網: http://druid.io 。Druid誕生於MetaMarkets公司(https://metamarkets.com/)。數據庫

Hadoop/Hive數據分析有個致命弱點就是速度,爲了提高速度,不少公司都嘗試過以下的查詢架構:數據結構

很明顯,相比於第4種架構,第5種直接對數據源進行流式處理,真可謂簡單、直接。架構

 

MetaMarkets公司爲了知足自身實時數據分析的須要,曾經嘗試過第二、3種架構,可是沒法解決下面2個問題:負載均衡

  1. RDBMS查詢速度太慢(Mysql等全表掃描大數據量時響應時間是個問題);
  2. 不支持靈活的查詢分析能力(通常在第3種方案,須要按維度預計算、存儲在Nosql/Hbase中,以提升速度。可是,維度若是不少就是災難。Kylin就是這麼作的....

 

Druid的設計之初,肯定了3個原則:分佈式

  1. 快速查詢
  2. 水平擴展能力
  3. 實時分析

 下面,簡單介紹下Druid的基本概念:工具

1.數據格式:oop

Druid的每一個數據集包含3個部分: 時間列、維度列、指標列。 這三個部分是必須具有的,下邊是一個數據格式:性能

 

2.數據攝入:大數據

包括2種攝入方式:實時攝入批處理攝入

 

3.數據查詢

Druid原生查詢採用JSON格式,經過HTTP傳送,目前並不支持SQL(後邊組件可能支持,例如PlyQL)。

 

數據分析是從數據變成信息、從信息變成知識、最後從知識變爲智慧的過程。常常討論的幾個概念是 BI(商業智能) ,DM(數據挖掘)和OLAP(聯機分析處理)。OLAP是一種創建數據系統的方法,核心是構建多維度的數據立方體,以維度、度量爲基本概念,輔以元數據實現能夠鑽取、切片、切塊等靈活、系統和直觀的數據展示。

通常地,Druid、Pinot和Kylin是數據分析軟件選型常常碰到的問題。Pinot設計規範,系統也比較複雜,可是由於開源時間短,社區支持能力弱於Druid。Druid設計輕巧,代碼庫更易懂,支持比較靈活的功能加強。Kylin最大的優點是支持SQL訪問,能夠兼容傳統bi和報表工具,性能並不具優點。

 

2.druid架構

傳統RDBMS爲了提升查詢速度,通常都會建立索引,那麼在數據寫入時,因爲建立索引會消耗額外的性能。也就是說,沒法作到同時保證數據攝入和數據查詢性能。而Druid卻能夠實現,這得力於其獨到的架構設計、DataSource和Segment數據結構以及系統的優秀設計和實現。

 

2.1 總體架構:

下圖爲Druid的架構圖:

 

實時節點(Real-time Nodes):攝入實時數據,生成Segment文件。

歷史節點(Historical Nodes):加載數據文件,支持查詢。

查詢節點(Broker Nodes):對外提供查詢服務,同時從實時和歷史節點查詢數據並回調對方。

協調節點(Coordinator Nodes):負責歷史節點的負載均衡,以及經過規則管理數據生命週期。

元數據庫(Mysql): 存儲元數據信息,例如Segment。

分佈式協調(Zookeeper):爲Druid集羣提供一致性協調服務組件。

數據文件庫(Deep Storage):存儲Segment數據文件,並供歷史節點下載。(能夠是本地磁盤,或HDFS)

 

Druid本質上是一個分佈式的時序數據庫

2.2 DataSource和Segment數據結構:

Druid的DataSource相似於RDBMS的Table,包含時間列、維度列、指標列(第一部分已介紹)。不管是實時消費仍是批處理,druid基於DataSource結構存儲數據。druid在數據存儲時就能夠對數據進行聚合是它的一大特色。

DataSource是邏輯概念,那Segment則是一個物理存儲格式。數據橫向切割:Druid將不一樣時間範圍內的數據存儲在不一樣的Segment塊中。數據縱向切割:Segment也面向列進行數據壓縮存儲。

相似插件功能,Druid支持自身提供的pull-deps工具下載依賴到本地倉庫,來擴展Druid的功能和支持(這裏不展開了)。

 

2.3 實時結點:

實時結點經過firehose來消費實時數據,實時結點會經過Plumber模塊生成segment數據文件。

Segment文件從製造到傳播的過程以下:

  1. 實時節點產出Segment數據文件,並上傳到DeepStorage中;
  2. Segment相關文件的元數據信息存放MetaStore裏。
  3. Master節點(Coordinator Nodes)根據元數據信息,根據規則配置分配給符合條件的歷史節點。
  4. 實時節點丟棄該Segment數據文件,並向集羣聲明再也不提供該Segment數據文件的查詢服務。
相關文章
相關標籤/搜索