Druid是一個(gè)用于大數(shù)據(jù)實(shí)時(shí)查詢和分析的高容錯(cuò)、高性能開(kāi)源分布式系統(tǒng),旨在 快速處理大規(guī)模的數(shù)據(jù),并能夠?qū)崿F(xiàn)快速查詢和分析。尤其是當(dāng)發(fā)生代碼部署、機(jī)器故障以及其他產(chǎn)品系統(tǒng)遇到宕機(jī)等情況時(shí),Druid仍能夠保持100%正常 運(yùn)行。創(chuàng)建Druid的最初意圖主要是為了解決查詢延遲問(wèn)題,當(dāng)時(shí)試圖使用Hadoop來(lái)實(shí)現(xiàn)交互式查詢分析,但是很難滿足實(shí)時(shí)分析的需要。而Druid 提供了以交互方式訪問(wèn)數(shù)據(jù)的能力,并權(quán)衡了查詢的靈活性和性能而采取了特殊的存儲(chǔ)格式。
Druid功能介于PowerDrill和Dremel之 間,它幾乎實(shí)現(xiàn)了Dremel的所有功能,并且從PowerDrill吸收一些有趣的數(shù)據(jù)格式。Druid允許以類(lèi)似Dremel和PowerDrill 的方式進(jìn)行單表查詢,同時(shí)還增加了一些新特性,如為局部嵌套數(shù)據(jù)結(jié)構(gòu)提供列式存儲(chǔ)格式、為快速過(guò)濾做索引、實(shí)時(shí)攝取和查詢、高容錯(cuò)的分布式體系架構(gòu)等。從 官方得知,Druid的具有以下主要特征:
為分析而設(shè)計(jì)——Druid是為OLAP工作流的探索性分析而構(gòu)建,它支持各種過(guò)濾、聚合和查詢等類(lèi);快速的交互式查詢——Druid的低延遲數(shù)據(jù)攝取架構(gòu)允許事件在它們創(chuàng)建后毫秒內(nèi)可被查詢到;高可用性——Druid的數(shù)據(jù)在系統(tǒng)更新時(shí)依然可用,規(guī)模的擴(kuò)大和縮小都不會(huì)造成數(shù)據(jù)丟失;可擴(kuò)展——Druid已實(shí)現(xiàn)每天能夠處理數(shù)十億事件和TB級(jí)數(shù)據(jù)。Druid應(yīng)用最多的是類(lèi)似于廣告分析創(chuàng)業(yè)公司Metamarkets中的應(yīng)用場(chǎng)景,如廣告分析、互聯(lián)網(wǎng)廣告系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)控等。當(dāng)業(yè)務(wù)中出現(xiàn)以下情況時(shí),Druid是一個(gè)很好的技術(shù)方案選擇:
需要交互式聚合和快速探究大量數(shù)據(jù)時(shí);需要實(shí)時(shí)查詢分析時(shí);具有大量數(shù)據(jù)時(shí),如每天數(shù)億事件的新增、每天數(shù)10T數(shù)據(jù)的增加;對(duì)數(shù)據(jù)尤其是大數(shù)據(jù)進(jìn)行實(shí)時(shí)分析時(shí);需要一個(gè)高可用、高容錯(cuò)、高性能數(shù)據(jù)庫(kù)時(shí)。一個(gè)Druid集群有各種類(lèi)型的節(jié)點(diǎn)(Node)組成,每個(gè)節(jié)點(diǎn)都可以很好的處理一些的事情,這些節(jié)點(diǎn)包括對(duì)非實(shí)時(shí)數(shù)據(jù)進(jìn)行處理存儲(chǔ)和查詢的Historical節(jié)點(diǎn)、實(shí)時(shí)攝取數(shù)據(jù)、監(jiān)聽(tīng)輸入數(shù)據(jù)流的Realtime節(jié)、監(jiān)控Historical節(jié)點(diǎn)的Coordinator節(jié)點(diǎn)、接收來(lái)自外部客戶端的查詢和將查詢轉(zhuǎn)發(fā)到Realtime和Historical節(jié)點(diǎn)的Broker節(jié)點(diǎn)、負(fù)責(zé)索引服務(wù)的Indexer節(jié)點(diǎn)。
查詢操作中數(shù)據(jù)流和各個(gè)節(jié)點(diǎn)的關(guān)系如下圖所示:
如下圖是Druid集群的管理層架構(gòu),該圖展示了相關(guān)節(jié)點(diǎn)和集群管理所依賴(lài)的其他組件(如負(fù)責(zé)服務(wù)發(fā)現(xiàn)的ZooKeeper集群)的關(guān)系:
Druid已基于Apache License 2.0協(xié)議開(kāi)源,代碼托管在GitHub,其當(dāng)前最新穩(wěn)定版本是0.7.1.1。當(dāng)前,Druid已有63個(gè)代碼貢獻(xiàn)者和將近2000個(gè)關(guān)注。Druid的主要貢獻(xiàn)者包括廣告分析創(chuàng)業(yè)公司Metamarkets、電影流媒體網(wǎng)站Netflix、Yahoo等公司。Druid官方還對(duì)Druid同Shark、Vertica、Cassandra、Hadoop、Spark、Elasticsearch等在容錯(cuò)能力、靈活性、查詢性能等方便進(jìn)行了對(duì)比說(shuō)明。更多關(guān)于Druid的信息,大家還可以參考官方提供的入門(mén)教程、白皮書(shū) 、設(shè)計(jì)文檔等。