Druid翻译二:Druid Quickstart
Quickstart
本文会下载最新的druid,单机部署后加载一些数据并进行查询。
前提条件需要:
- java7及其以上版本
- Linux, Mac OS X, or other Unix-like OS,不支持windows
- 8G内存
- 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包下,有以下内容:
- LICENSE - license文件
- bin/ - 对此quickstart有用的脚本
- conf/ - 集群设置的配置模板
- conf-quickstart/ - 此quickstart的配置
- extensions/ - Druid的所有扩展
- haddop-dependencies/ - Druid haddop的依赖
- lib/ - 所有Druid核心包含的包
- quickstart/ - 对此quickstart有用的文件
启动zookeeper
Druid依赖zookeeper进行分布式系统的协调,你需要下载并运行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服务
当Zookeeper启动后,返回druid-0.9.2的目录。在根目录下,执行以下指令:
bin/init
这会为你设置一些目录。然后,你可以在不同的终端窗口启动多个Druid 进程。在本教程中会在同一系统中运行所有Druid进程,在一些大型分布式集群中也可以将一些Druid进程配置在一起。
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
当服务启动后你能看到一条日志信息被打印。
如果你想停止服务,CTRL-C 可以退出正在运行的java进程。服务停止后,如果你想干净的启动,删除var目录并且重新执行init脚本。
每次服务启动后,你都可以加载数据了。
批量加载数据
为了便于你开始使用Druid,我们收录了2016年9月12号维基百科的编辑示例。
本节介绍如何批量加载数据,但是你可以跳过开头直接学习如何加载实时数据流。Druid的流媒体摄取能够在事件发生和可查询之间无时延的加载数据。
除了时间维度以外,在维基百科的数据集中的维度dimensions (可以过滤和拆分的属性),还包括:
- channel
- cityName
- comment
- countryIsoCode
- countryName
- isAnonymous
- isMinor
- isNew
- isRobot
- isUnpatrolled
- metroCode
- namespace
- page
- regionIsoCode
- regionName
- user
在Druid(能够聚合的值)中维基百科数据集中有如下已知度量方式:
- count
- added
- deleted
- delta
- user_unique
你可以提交一个指向文件的数据提取任务,向Druid中加载数据。我们已经包含了一个任务,能够加载归档文件中的wikiticker-2015-09-12-sampled.json文件。打开一个新的终端窗口,进入druid-0.9.2目录,然后将这个任务提交到Druid:
curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
如果任务提交成功,将会打印输出任务的ID
{"task":"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
可以通过http://localhost:8090/console.html控制台界面,查看任务的状态。你可以定期的刷新界面,当任务成功的时候,任务状态会变成"SUCCESS"。
当数据提取任务结束后,数据会被historical nodes加载,然后一两分钟后就可以查询到了。你可以通过协调器控制台界面来监控数据加载的进度,登录http://localhost:8081/#/ 界面,观察是否存在一个"wikiticker"数据源,如果有一个蓝色圆圈则表明该数据完全可用。
一旦数据已经完全可用,你就能立即查询到它-通过下面的数据查询章节可以学习如何进行查询。或者如果你想加载不同的数据集,你也能够继续加载想要的数据部分。
加载流式数据
我们可以通过简单的HTTP API将事件推送到Druid,来加载流式数据。为了实现这点我们需要用到一个高级别的data producer库Tranquility。
执行以下指令来下载
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里面已经包含了配置,作为Druid分发的一个metrics datasource。将Tranquility服务进程启动,就可以将时间直接推送到Druid了。
bin/tranquility server -configFile <path_to_druid_distro>/conf-quickstart/tranquility/server.json
本节介绍了如何使用Tranquility加载数据,但Druid还支持各种其他的流式传输方式,包括现在比较流行的流技术,如Kafka, Storm, Samza和Spark Streaming。
数据源的维度(能够过滤和拆分的属性)是灵活的。无模式维度的配置意味着Druid能够接受JSON输入中的任意字段作为维度。
此数据源中的metrics度量(可以聚合的值)为:
- count
- value_sum (从输入中导出)
- value_min (从输入中导出)
- value_max (从输入中导出)
我们内置了一些脚本,可以生成一些随机样本维度加载到此数据源中。你可以在Druid分发库中执行以下指令来使用它:
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服务器收到你发送的25个事件,并且向Druid发送了25个。请注意,这可能需要几秒钟来完成第一次运行,因为必须要给摄取任务分配Druid资源。后续的POSTS应该能快速完成。
一旦数据发送到Druid,就能够马上查询到它了。
数据查询
直接Druid查询
Druid支持一系列基于JSON的查询。我们在quickstart/wikiticker-top-pages.json中包含了一个topN查询的示例,它会在此数据集中找到最多编辑的文章:
curl -L -H'Content-Type: application/json' -XPOST --data-binary @quickstart/wikiticker-top-pages.json http://localhost:8082/druid/v2/?pretty
可视化数据
Druid是面向高级用户的分析应用程序的理想选择。有许多不同的开源软件用Druid进行数据的可视化和探索。 我们建议尝试Pivot,Caravel或Metabase对刚摄取的数据进行可视化。
例如,如果您安装了Pivot,您应该可以在浏览器中的localhost:9090查看您的数据。
SQL和其它查询库
对于Druid,我们还有更多的查询工具,包括SQL引擎和各种语言(如python和Ruby)的库。更多信息请参考库列表。