Druid:一個用於大數據實時處理的開源分佈式系統

1. 引言

Druid是一個用於大數據實時查詢和分析的高容錯、高性能開源分佈式系統,旨在快速處理大規模的數據,並可以實現快速查詢和分析。尤爲是當發生代碼部署、機器故障以及其餘產品系統遇到宕機等狀況時,Druid仍可以保持100%正常運行。建立Druid的最初意圖主要是爲了解決查詢延遲問題,當時試圖使用Hadoop來實現交互式查詢分析,可是很難知足實時分析的須要。而Druid提供了以交互方式訪問數據的能力,並權衡了查詢的靈活性和性能而採起了特殊的存儲格式。git

2. 功能介紹

Druid功能介於PowerDrill和Dremel之間,它幾乎實現了Dremel的全部功能,而且從PowerDrill吸取一些有趣的數據格式。Druid容許以相似Dremel和PowerDrill的方式進行單表查詢,同時還增長了一些新特性,如爲局部嵌套數據結構提供列式存儲格式、爲快速過濾作索引、實時攝取和查詢、高容錯的分佈式體系架構等。從官方得知,Druid的具備如下主要特徵:github

  • 爲分析而設計——Druid是爲OLAP工做流的探索性分析而構建,它支持各類過濾、聚合和查詢等類;
  • 快速的交互式查詢——Druid的低延遲數據攝取架構容許事件在它們建立後毫秒內可被查詢到;
  • 高可用性——Druid的數據在系統更新時依然可用,規模的擴大和縮小都不會形成數據丟失;
  • 可擴展——Druid已實現天天可以處理數十億事件和TB級數據。

3. 應用場景

Druid應用最多的是相似於廣告分析創業公司Metamarkets中的應用場景,如廣告分析、互聯網廣告系統監控以及網絡監控等。當業務中出現如下狀況時,Druid是一個很好的技術方案選擇:數據庫

  • 須要交互式聚合和快速探究大量數據時;
  • 須要實時查詢分析時;
  • 具備大量數據時,如天天數億事件的新增、天天數10T數據的增長;
  • 對數據尤爲是大數據進行實時分析時;
  • 須要一個高可用、高容錯、高性能數據庫時。

4. 系統架構

一個Druid集羣有各類類型的節點(Node)組成,每一個節點均可以很好的處理一些的事情,這些節點包括對非實時數據進行處理存儲和查詢的Historical節點、實時攝取數據、監聽輸入數據流的Realtime節、監控Historical節點的Coordinator節點、接收來自外部客戶端的查詢和將查詢轉發到Realtime和Historical節點的Broker節點、負責索引服務的Indexer節點。網絡

查詢操做中數據流和各個節點的關係以下圖所示:數據結構

輸入圖片說明

以下圖是Druid集羣的管理層架構,該圖展現了相關節點和集羣管理所依賴的其餘組件(如負責服務發現的ZooKeeper集羣)的關係:架構

輸入圖片說明

5. 開源計劃

Druid已基於Apache License 2.0協議開源,代碼託管在GitHub,其當前最新穩定版本是0.9.1.1。當前,Druid已有63個代碼貢獻者和將近2000個關注。Druid的主要貢獻者包括廣告分析創業公司Metamarkets、電影流媒體網站Netflix、Yahoo等公司。Druid官方還對Druid同Shark、Vertica、Cassandra、Hadoop、Spark、Elasticsearch等在容錯能力、靈活性、查詢性能等方便進行了對比說明。更多關於Druid的信息,你們還能夠參考官方提供的入門教程、白皮書 、設計文檔等。分佈式

相關文章
相關標籤/搜索