Quickstart
本文會下載最新的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/ - 對此quickstart有用的腳本
- conf/ - 集群設(shè)置的配置模板
- conf-quickstart/ - 此quickstart的配置
- extensions/ - Druid的所有擴(kuò)展
- haddop-dependencies/ - Druid haddop的依賴
- lib/ - 所有Druid核心包含的包
- quickstart/ - 對此quickstart有用的文件
啟動zookeeper
Druid依賴zookeeper進(jìn)行分布式系統(tǒng)的協(xié)調(diào),你需要下載并運行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
啟動Druid服務(wù)
當(dāng)Zookeeper啟動后,返回druid-0.9.2的目錄。在根目錄下,執(zhí)行以下指令:
bin/init
這會為你設(shè)置一些目錄。然后,你可以在不同的終端窗口啟動多個Druid 進(jìn)程。在本教程中會在同一系統(tǒng)中運行所有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ù)啟動后你能看到一條日志信息被打印。
如果你想停止服務(wù),CTRL-C 可以退出正在運行的java進(jìn)程。服務(wù)停止后,如果你想干凈的啟動,刪除var目錄并且重新執(zhí)行init腳本。
每次服務(wù)啟動后,你都可以加載數(shù)據(jù)了。
批量加載數(shù)據(jù)
為了便于你開始使用Druid,我們收錄了2016年9月12號維基百科的編輯示例。
本節(jié)介紹如何批量加載數(shù)據(jù),但是你可以跳過開頭直接學(xué)習(xí)如何加載實時數(shù)據(jù)流。Druid的流媒體攝取能夠在事件發(fā)生和可查詢之間無時延的加載數(shù)據(jù)。
除了時間維度以外,在維基百科的數(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
你可以提交一個指向文件的數(shù)據(jù)提取任務(wù),向Druid中加載數(shù)據(jù)。我們已經(jīng)包含了一個任務(wù),能夠加載歸檔文件中的wikiticker-2015-09-12-sampled.json文件。打開一個新的終端窗口,進(jìn)入druid-0.9.2目錄,然后將這個任務(wù)提交到Druid:
curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
如果任務(wù)提交成功,將會打印輸出任務(wù)的ID
{"task":"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
可以通過http://localhost:8090/console.html控制臺界面,查看任務(wù)的狀態(tài)。你可以定期的刷新界面,當(dāng)任務(wù)成功的時候,任務(wù)狀態(tài)會變成"SUCCESS"。
當(dāng)數(shù)據(jù)提取任務(wù)結(jié)束后,數(shù)據(jù)會被historical nodes加載,然后一兩分鐘后就可以查詢到了。你可以通過協(xié)調(diào)器控制臺界面來監(jiān)控數(shù)據(jù)加載的進(jìn)度,登錄http://localhost:8081/#/ 界面,觀察是否存在一個"wikiticker"數(shù)據(jù)源,如果有一個藍(lán)色圓圈則表明該數(shù)據(jù)完全可用。
一旦數(shù)據(jù)已經(jīng)完全可用,你就能立即查詢到它-通過下面的數(shù)據(jù)查詢章節(jié)可以學(xué)習(xí)如何進(jìn)行查詢?;蛘呷绻阆爰虞d不同的數(shù)據(jù)集,你也能夠繼續(xù)加載想要的數(shù)據(jù)部分。
加載流式數(shù)據(jù)
我們可以通過簡單的HTTP API將事件推送到Druid,來加載流式數(shù)據(jù)。為了實現(xiàn)這點我們需要用到一個高級別的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ā)的一個metrics datasource。將Tranquility服務(wù)進(jìn)程啟動,就可以將時間直接推送到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
然后會打印輸出類似如下信息:
{"result":{"received":25,"sent":25}}
這表示HTTP服務(wù)器收到你發(fā)送的25個事件,并且向Druid發(fā)送了25個。請注意,這可能需要幾秒鐘來完成第一次運行,因為必須要給攝取任務(wù)分配Druid資源。后續(xù)的POSTS應(yīng)該能快速完成。
一旦數(shù)據(jù)發(fā)送到Druid,就能夠馬上查詢到它了。
數(shù)據(jù)查詢
直接Druid查詢
Druid支持一系列基于JSON的查詢。我們在quickstart/wikiticker-top-pages.json中包含了一個topN查詢的示例,它會在此數(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是面向高級用戶的分析應(yīng)用程序的理想選擇。有許多不同的開源軟件用Druid進(jìn)行數(shù)據(jù)的可視化和探索。 我們建議嘗試Pivot,Caravel或Metabase對剛攝取的數(shù)據(jù)進(jìn)行可視化。
例如,如果您安裝了Pivot,您應(yīng)該可以在瀏覽器中的localhost:9090查看您的數(shù)據(jù)。
SQL和其它查詢庫
對于Druid,我們還有更多的查詢工具,包括SQL引擎和各種語言(如python和Ruby)的庫。更多信息請參考庫列表。
集群安裝
此快速入門將使您能在單個計算機(jī)上運行的所有服務(wù)。 下一步是加載您自己的數(shù)據(jù)。 或者,您可以跳過去運行一個分布式集群。