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

8gw234 9年前發布 | 35K 次閱讀 Druid 分布式/云計算/大數據

原文  http://www.infoq.com/cn/news/2015/04/druid-data


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:一個用于大數據實時處理的開源分布式系統

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

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

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

 本文由用戶 8gw234 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!