1. 程式人生 > >Druid.io實時大資料原理介紹

Druid.io實時大資料原理介紹

Druid.io是“神馬”?

Druid.io是一個開源的,分散式的,列式儲存的,適用於實時資料分析的OLAP系統。它能夠快速聚合、靈活過濾、毫秒級查詢、和低延遲資料匯入。2011年,MetaMarkets公司為了解決廣告交易中海量實時資料的分析問題,在嘗試各種SQL和NoSQL方案後,決定自行設計並建立Druid並於2013年開源。Druid被設計成支援PB級別資料量每天處理數十億流式事件。Druid之所以保持高效有以下幾個原因:

  1. 資料進行了有效的預聚合或預計算。
  2. 資料結果的優化,應用了Bitmap的壓縮演算法。
  3. 可擴充套件的高可用架構,靈活的支援部署和擴充套件。
  4. 社群的力量,Druid開發和使用者社群保持活躍,不斷推動Druid完善和改進。

Druid叢集介紹

關於Druid的架構,我們先通過其總體設計架構圖來做一個概要了解,如下圖所示:
image

  1. 實時節點(RealTime Node):即時攝入資料,以及生成Segment資料檔案。
  2. 歷史節點(Historical Node):載入已經生成好的資料檔案,以供資料查詢。
  3. 查詢節點(Broker Node):對外提供資料查詢服務,並同時從實時節點與歷史節點查詢資料,合併後返回給呼叫方。
  4. 協調節點(Coordinator Node):負責歷史節點資料負載均衡,以及通過規則(Rule)來管理資料的生命週期。

叢集的外部依賴如下圖所示:
image

  1. 元資料庫(Metastore):儲存Druid叢集的元資料資訊,比如Segment的相關資訊,一般用MySQL或者PostgreSQL。
  2. 分散式協調服務:為Druid叢集提供一致性協調服務元件,通常為Zookeeper。
  3. 資料檔案儲存(DeepStorage):存放生成的Segment資料檔案,並提供歷史節點下載。對於單節點叢集可以是本地磁碟,而對於分散式叢集一般是HDFS或NFS。

Druid實時節點

實時節點主要負責即時攝入資料,以及生成Segment檔案,其獨到的設計使其擁有超強的資料攝入速度。
image
Segment資料檔案從生成到傳播需要經歷一個完整的流程,步驟如下:

  1. 實時節點生產出Segment資料檔案,並將其上傳到DeepStorage中。
  2. Segment資料檔案的相關元資料資訊被儲存到MySQL中。實時節點轉存的Segment會在ZooKeeper中新增一條記錄
  3. Master節點(即Coordinator幾點)從MetaStore裡得知Segment資料檔案的相關元資料資訊後,將其根據規則的設定分配符合條件的歷史節點。
  4. 歷史節點得到指令會主動從DeepStorage中拉取指定的Segment資料檔案,並通過Zookeeper向叢集申明其負責提供該Segment資料檔案的查詢服務。
  5. 實時節點丟棄該Segment資料檔案,並向叢集申明其不再提供該Segment資料檔案的查詢服務。

Druid歷史節點

歷史節點用於負責載入已經生成好的資料檔案以提供資料查詢。由於Druid的資料檔案有不可更改性,因此歷史節點的工作就是專注於提供資料查詢。
image

  1. Coordinator在ZK與History節點相關聯的載入佇列路徑下建立一個臨時記錄。
  2. 當歷史節點發現在Zookeeper中有需要載入的新的記錄。它首先檢查本地磁碟目錄(快取)中關於新的Segment的資訊。如果快取中沒有關於新的Segment的資訊,歷史節點將下載新的Segment的元資料資訊並告知Zookeeper。元資料包含新的Segment在“Deep Storage”中的儲存位置,怎樣去解壓縮和處理新的Segment的資訊。
  3. 一旦歷史節點處理完一個Segment,就公佈該Segment可查詢。

Druid查詢節點

查詢節點對外提供資料查詢服務,並同時從實時節點與歷史節點查詢資料,合併後返回給呼叫方。Zookeeper維護有關歷史和實時的節點資訊和它們所能提供服務的Segment。當收某個資料來源和時間的查詢,代理節點執行查詢與查詢資料來源時間相關的時間軸和檢索包含資料查詢的節點。代理節點將查詢轉發到所選節點。
image

Druid協調節點

協調節點負責歷史節點的資料負載均衡,以及通過規則管理資料的生命週期。Druid針對每個DataSource設定規則來載入或者丟棄具體的資料檔案,以管理資料生命週期。可以對一個DataSource按照順序新增多條規則,對於一個Segment資料檔案來說,協調節點會逐條檢查規則,當碰到當前Segment資料檔案符合某條規則的時候,協調節點會立即命令歷史節點堆該Segment資料檔案執行這條規則——載入或者丟棄,並停止檢查餘下的規則,否則繼續檢查下一條規則。

Druid索引服務

除了通過實時節點產生出Segment資料檔案外,Druid還提供一組名為索引服務的元件。不同於實時節點的單點模式,索引服務實際包含一組元件,並以主從結構作為其架構方式,其中統治節點(Overlord Node)為主節點,而中間管理者(Middle Manager)為從節點。索引節點服務架構示意圖如下所示:
image

索引服務是主從結構,由三個部分組成:

  1. peon元件:在一個單獨的jvm中執行單個任務,通過單獨的jvm對任務做資源隔離和日誌隔離。
  2. Middle Manager:用於建立和管理peon的中層管理元件
  3. overlord元件:管理任務分配到Middle Manager

相關推薦

Druid.io實時資料原理介紹

Druid.io是“神馬”?Druid.io是一個開源的,分散式的,列式儲存的,適用於實時資料分析的OLAP系統。它能夠快速聚合、靈活過濾、毫秒級查詢、和低延遲資料匯入。2011年,MetaMarkets公司為了解決廣告交易中海量實時資料的分析問題,在嘗試各種SQL和NoSQ

快速瞭解Druid——實時資料分析軟體

Druid 是什麼   Druid 單詞來源於西方古羅馬的神話人物,中文常常翻譯成德魯伊。   本問介紹的Druid 是一個分散式的支援實時分析的資料儲存系統(Data Store)。美國廣告技術公司MetaMarkets 於2011 年建立了Druid 專案,並且於2012 年晚期開源了Druid 專案。

資料 Hadoop介紹、配置與使用

前言 Hadoop是Apache軟體基金會旗下的一個開源分散式計算平臺。 大資料 基礎概念 大資料 Centos基礎 大資料 Shell基礎 大資料 ZooKeeper 大資料 Hadoop介紹、配置與使用 大資料 Hadoop之HDFS

重溫資料---Hive介紹與填坑配置

沿著前面的內容,接下來的文章就是關於Hive從基礎的搭建到高階應用的知識。鄙人在大二初學Hive的時候,只是覺得Hive和Mysql差不多,但是對於Hive為什麼叫做資料倉庫,以及Hive的UDF程式設計我並沒有太多思考。所以啊,為了混口飯吃遲早還是要還的。所幸目前算是明白了資料

資料入門:各種資料技術介紹

大資料我們都知道hadoop,可是還會各種各樣的技術進入我們的視野:Spark,Storm,impala,讓我們都反映不過來。為了能夠更好的架構大資料專案,這裡整理一下,供技術人員,專案經理,架構師選擇合適的技術,瞭解大資料各種技術之間的關係,選擇合適的語言。我們可以帶著下面

資料原理筆記——雲資料庫(二)

Amazon AWS及雲資料庫                                                                                                總體架構圖 一、AWS Globle Infra

資料原理筆記——MapReduce

解決能夠滿足“分而治之”處理要求的場景。處理結果之間不能相互依賴。 map任務之間是不能通訊的,reduce之間也不會發生資訊交換。 處理過程:inputformat,負責資料的輸入,驗證資料格式及檔案切分(split),通過RR(record-reader)過程,根據切

springboot 使用clickhouse實時資料分析引擎的方法

宣告: 因專案中使用clickhouse引擎這裡springboot使用的方式是jdbc方式連線,這種方式的好處是可以使用clickhouse 自帶的fetch方法批量從clickhouse中獲取資料,對於大量資料的下載來說,比較好 因為如果全部拿到記憶體中處理,大量資料會有記憶體溢位的結果

實時資料平臺技術選型概要

一、DELETED 1-1 業務背景、業務場景、業務模式 背景: 為了更好的做到個性化服務、使用者體驗提升、智慧分析、風險控制,在大資料離線(批)處理之外,搭建實時(流式)處理平臺迫在眉睫。比如說對實時性要求較高。。。。。。 [批流統一,業界暫時還沒有成熟方案

資料技術介紹(一)

早在上世紀八十年代,著名未來學家托夫勒在所著的《第三次浪潮》中提出了“大資料”的概念。《自然》雜誌在2008年9月推出了名為“大資料”的封面專欄。從2009年開始“大資料”開始成為網際網路技術行業中的熱門詞彙。在中國,是從2012開始,大資料的時代才真正大面積的開始流行,為人們所知的。 &

Ebay開源 Pulsar:實時資料分析平臺

作者:汪興朗 汪明明王巧玲   eBay作為全球性的商務平臺和支付行業領先者,擁有海量的使用者行為資料。基於現有的hadoop大資料處理,已經不能夠滿足業務上對實時性的需求。基於eBay過去的大資料處理的經驗和對最新技術的運用,eBay探索出一個對海量的資料流進行實時的收集

離線和實時資料開發實戰

離線和實時大資料開發實戰 目 錄 前言 第一篇 資料大圖和資料平臺大圖 第1章 資料大圖 2 1.1 資料流程 2 1.1.1 資料產生 3 1.1.2 資料採集和傳輸 5 1.1.3 資料儲存處理 6 1.1.4 資料應用 7 1.2 資料技術 8 1.2.1 資料採集傳輸主要技術 9

基於Kafka與Spark的實時資料質量監控平臺

微軟的ASG (應用與服務集團)包含Bing,、Office,、Skype。每天產生多達5 PB以上資料,如何構建一個高擴充套件性的data audit服務來保證這樣量級的資料完整性和實時性非常具有挑戰性。本文將介紹微軟ASG大資料團隊如何利用Kafka、Spark以及Elasticsear

京東實時資料平臺

JRDW(JD Realtime Data Warehouse)是京東大資料部為了解決公司越來越廣泛的實時業務需求,而推出的一整套技術解決方案,包括資料的實時接入、實時解析、實時傳輸、實時計算和實時查詢等技術環節。通過JRDW來解決實時業務開發中各環節的技術難點,在流程上

資料原理分析

第一是大資料的資料獲取方式: 資料清洗是將重複,多餘的資料篩選清除,將缺失的資料補全完整,將錯誤的資料糾正或者刪除;最後整理成我們可以進一步使用和加工的資料儲存到資料庫中。 所謂的資料清洗也就是ETL處理,包括抽取Extract,轉換TRANSFORM,載入LOAD這三大法寶。 資料清洗的步驟一般都

SODBASE實時資料基礎(一):實時同步Mysql資料庫到Kafka

在實際大資料工作中,常常有實時監測資料庫變化或實時同步資料到大資料儲存,解決大資料實時分析的需求。同時,增量同步資料庫資料相比全量查詢也減少了網路頻寬消耗。本文以Mysql的bin-log到Kafka為例,使用Canal Server,通過SODBASE引擎不用寫程式就可以

Storm實時資料處理(二)

在上一篇部落格(Storm實時大資料處理(一))中,我介紹了Storm的基本概念和原理,本文我們開始基於Storm提供的API開發自己的應用程式。入門Storm應用程式開發很簡單,這得益於設計者為我們精心設計的簡單API。 一、搭建開發環境 在生產環境中,Storm叢集執行

實時資料處理效能瓶頸

 1、業務資料特性    1、資料來源突然流量增大;       對於這點,曾見有人將資料快取到硬碟上,待流量變小時再發出去。我認為這樣並不是解決問題的根本辦法,因為在流量波峰的情況下,這樣的序列IO會使效率更低。我的經驗是,使用足夠大的記憶體緩衝,並且提高記憶體的使用

TOP100summit:【分享實錄-Microsoft】基於Kafka與Spark的實時資料質量監控平臺

本篇文章內容來自2016年TOP100summit Microsoft資深產品經理邢國冬的案例分享。 編輯:Cynthia 邢國冬(Tony Xing):Microsoft資深產品經理、負責微軟應用與服務集團的大資料平臺構建,資料產品與服務. 導讀:微軟的

Storm實時資料處理(一)

自從Google發表了3篇舉世矚目的論文(Google File System、BigTable和MapReduce)以後,大資料被引爆了。如果說計算機的威力相當於一枚大炮的威力的話,那麼網際網路的威力相當於一顆原子彈,而大資料的威力則相當於氫彈,大資料成為了IT發展史上的