Quickstart
本文會(huì)下載最新的druid,單機(jī)部署后加載一些數(shù)據(jù)并進(jìn)行查詢。
前提條件需要:
- java7及其以上版本
- Linux, Mac OS X, or other Unix-like OS丸逸,不支持windows
- 8G內(nèi)存
- 2核CPU
入門
通過在終端輸入以下指令痢掠,來安裝Druid:
curl -O http://static.druid.io/artifacts/releases/druid-0.9.2-bin.tar.gz
tar -xzf druid-0.9.2-bin.tar.gz
cd druid-0.9.2
在druid包下仓技,有以下內(nèi)容:
- LICENSE - license文件
- bin/ - 對(duì)此quickstart有用的腳本
- conf/ - 集群設(shè)置的配置模板
- conf-quickstart/ - 此quickstart的配置
- extensions/ - Druid的所有擴(kuò)展
- haddop-dependencies/ - Druid haddop的依賴
- lib/ - 所有Druid核心包含的包
- quickstart/ - 對(duì)此quickstart有用的文件
啟動(dòng)zookeeper
Druid依賴zookeeper進(jìn)行分布式系統(tǒng)的協(xié)調(diào)施禾,你需要下載并運(yùn)行Zookeeper。
curl http://www.gtlib.gatech.edu/pub/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -o zookeeper-3.4.6.tar.gz
tar -xzf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
cp conf/zoo_sample.cfg conf/zoo.cfg
./bin/zkServer.sh start
啟動(dòng)Druid服務(wù)
當(dāng)Zookeeper啟動(dòng)后宣蠕,返回druid-0.9.2的目錄例隆。在根目錄下,執(zhí)行以下指令:
bin/init
這會(huì)為你設(shè)置一些目錄抢蚀。然后镀层,你可以在不同的終端窗口啟動(dòng)多個(gè)Druid 進(jìn)程。在本教程中會(huì)在同一系統(tǒng)中運(yùn)行所有Druid進(jìn)程皿曲,在一些大型分布式集群中也可以將一些Druid進(jìn)程配置在一起唱逢。
java `cat conf-quickstart/druid/historical/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" io.druid.cli.Main server historical
java `cat conf-quickstart/druid/broker/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/broker:lib/*" io.druid.cli.Main server broker
java `cat conf-quickstart/druid/coordinator/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/coordinator:lib/*" io.druid.cli.Main server coordinator
java `cat conf-quickstart/druid/overlord/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/overlord:lib/*" io.druid.cli.Main server overlord
java `cat conf-quickstart/druid/middleManager/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/middleManager:lib/*" io.druid.cli.Main server middleManager
當(dāng)服務(wù)啟動(dòng)后你能看到一條日志信息被打印。
如果你想停止服務(wù)屋休,CTRL-C 可以退出正在運(yùn)行的java進(jìn)程坞古。服務(wù)停止后,如果你想干凈的啟動(dòng)劫樟,刪除var目錄并且重新執(zhí)行init腳本痪枫。
每次服務(wù)啟動(dòng)后,你都可以加載數(shù)據(jù)了叠艳。
批量加載數(shù)據(jù)
為了便于你開始使用Druid奶陈,我們收錄了2016年9月12號(hào)維基百科的編輯示例。
本節(jié)介紹如何批量加載數(shù)據(jù)附较,但是你可以跳過開頭直接學(xué)習(xí)如何加載實(shí)時(shí)數(shù)據(jù)流吃粒。Druid的流媒體攝取能夠在事件發(fā)生和可查詢之間無時(shí)延的加載數(shù)據(jù)。
除了時(shí)間維度以外拒课,在維基百科的數(shù)據(jù)集中的維度dimensions (可以過濾和拆分的屬性)徐勃,還包括:
- channel
- cityName
- comment
- countryIsoCode
- countryName
- isAnonymous
- isMinor
- isNew
- isRobot
- isUnpatrolled
- metroCode
- namespace
- page
- regionIsoCode
- regionName
- user
在Druid(能夠聚合的值)中維基百科數(shù)據(jù)集中有如下已知度量方式:
- count
- added
- deleted
- delta
- user_unique
你可以提交一個(gè)指向文件的數(shù)據(jù)提取任務(wù),向Druid中加載數(shù)據(jù)捕发。我們已經(jīng)包含了一個(gè)任務(wù)疏旨,能夠加載歸檔文件中的wikiticker-2015-09-12-sampled.json文件很魂。打開一個(gè)新的終端窗口扎酷,進(jìn)入druid-0.9.2目錄,然后將這個(gè)任務(wù)提交到Druid:
curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
如果任務(wù)提交成功遏匆,將會(huì)打印輸出任務(wù)的ID
{"task":"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
可以通過http://localhost:8090/console.html控制臺(tái)界面法挨,查看任務(wù)的狀態(tài)谁榜。你可以定期的刷新界面,當(dāng)任務(wù)成功的時(shí)候凡纳,任務(wù)狀態(tài)會(huì)變成"SUCCESS"窃植。
當(dāng)數(shù)據(jù)提取任務(wù)結(jié)束后,數(shù)據(jù)會(huì)被historical nodes加載荐糜,然后一兩分鐘后就可以查詢到了巷怜。你可以通過協(xié)調(diào)器控制臺(tái)界面來監(jiān)控?cái)?shù)據(jù)加載的進(jìn)度暴氏,登錄http://localhost:8081/#/ 界面,觀察是否存在一個(gè)"wikiticker"數(shù)據(jù)源答渔,如果有一個(gè)藍(lán)色圓圈則表明該數(shù)據(jù)完全可用。
一旦數(shù)據(jù)已經(jīng)完全可用沼撕,你就能立即查詢到它-通過下面的數(shù)據(jù)查詢章節(jié)可以學(xué)習(xí)如何進(jìn)行查詢宋雏。或者如果你想加載不同的數(shù)據(jù)集磨总,你也能夠繼續(xù)加載想要的數(shù)據(jù)部分。
加載流式數(shù)據(jù)
我們可以通過簡(jiǎn)單的HTTP API將事件推送到Druid舍败,來加載流式數(shù)據(jù)。為了實(shí)現(xiàn)這點(diǎn)我們需要用到一個(gè)高級(jí)別的data producer庫Tranquility敬拓。
執(zhí)行以下指令來下載
Tranquility:
curl -O http://static.druid.io/tranquility/releases/tranquility-distribution-0.8.0.tgz
tar -xzf tranquility-distribution-0.8.0.tgz
cd tranquility-distribution-0.8.0
在Druid配置文件conf-quickstart/tranquility/server.json里面已經(jīng)包含了配置邻薯,作為Druid分發(fā)的一個(gè)metrics datasource。將Tranquility服務(wù)進(jìn)程啟動(dòng)厕诡,就可以將時(shí)間直接推送到Druid了营勤。
bin/tranquility server -configFile <path_to_druid_distro>/conf-quickstart/tranquility/server.json
本節(jié)介紹了如何使用Tranquility加載數(shù)據(jù),但Druid還支持各種其他的流式傳輸方式葛作,包括現(xiàn)在比較流行的流技術(shù),如Kafka, Storm, Samza和Spark Streaming绪穆。
數(shù)據(jù)源的維度(能夠過濾和拆分的屬性)是靈活的。無模式維度的配置意味著Druid能夠接受JSON輸入中的任意字段作為維度玖院。
此數(shù)據(jù)源中的metrics度量(可以聚合的值)為:
- count
- value_sum (從輸入中導(dǎo)出)
- value_min (從輸入中導(dǎo)出)
- value_max (從輸入中導(dǎo)出)
我們內(nèi)置了一些腳本,可以生成一些隨機(jī)樣本維度加載到此數(shù)據(jù)源中试溯。你可以在Druid分發(fā)庫中執(zhí)行以下指令來使用它:
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/metrics
然后會(huì)打印輸出類似如下信息:
{"result":{"received":25,"sent":25}}
這表示HTTP服務(wù)器收到你發(fā)送的25個(gè)事件郊酒,并且向Druid發(fā)送了25個(gè)。請(qǐng)注意燎窘,這可能需要幾秒鐘來完成第一次運(yùn)行,因?yàn)楸仨氁o攝取任務(wù)分配Druid資源钩骇。后續(xù)的POSTS應(yīng)該能快速完成铝量。
一旦數(shù)據(jù)發(fā)送到Druid,就能夠馬上查詢到它了纽匙。
數(shù)據(jù)查詢
直接Druid查詢
Druid支持一系列基于JSON的查詢。我們?cè)趒uickstart/wikiticker-top-pages.json中包含了一個(gè)topN查詢的示例烛缔,它會(huì)在此數(shù)據(jù)集中找到最多編輯的文章:
curl -L -H'Content-Type: application/json' -XPOST --data-binary @quickstart/wikiticker-top-pages.json http://localhost:8082/druid/v2/?pretty
可視化數(shù)據(jù)
Druid是面向高級(jí)用戶的分析應(yīng)用程序的理想選擇轩拨。有許多不同的開源軟件用Druid進(jìn)行數(shù)據(jù)的可視化和探索。 我們建議嘗試Pivot晕翠,Caravel或Metabase對(duì)剛攝取的數(shù)據(jù)進(jìn)行可視化砍濒。
例如,如果您安裝了Pivot爸邢,您應(yīng)該可以在瀏覽器中的localhost:9090查看您的數(shù)據(jù)。
SQL和其它查詢庫
對(duì)于Druid碌尔,我們還有更多的查詢工具,包括SQL引擎和各種語言(如python和Ruby)的庫。更多信息請(qǐng)參考庫列表陪白。
集群安裝
此快速入門將使您能在單個(gè)計(jì)算機(jī)上運(yùn)行的所有服務(wù)。 下一步是加載您自己的數(shù)據(jù)立由。 或者序厉,您可以跳過去運(yùn)行一個(gè)分布式集群。