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

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

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

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

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

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

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

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

發佈了19 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章