在这个快速入门中,我们将下载Druid,在单个机器上设置,加载一些数据,并查询数据。
前提条件
你需要:
- Java 8或更高版本
- Linux,Mac OS X或其他类Unix操作系统(不支持Windows)
- 8G内存
- 2核CPU
在Mac OS X上,您可以使用Oracle的JDK 8来安装Java。
在Linux上,您的操作系统包管理器应该能够帮助Java。如果您的基于Ubunt的操作系统没有最新的Java版本,WebUpd8会为这些操作系统提供包。
入门
要安装Druid,请在终端中输入以下命令:
curl -O http://static.druid.io/artifacts/releases/druid-0.10.0-bin.tar.gz
tar -xzf druid-0.10.0-bin.tar.gz
cd druid-0.10.0
在包中,你应该找到:
-
LICENSE
-许可证文件。 -
bin/
-对快速入门有用的脚本 -
conf/\*
-集群设置的模板配置。 -
conf-quickstart/*
-此快速入门的配置。 -
extensions/*
-所有Druid扩展。 -
hadoop-dependencies/*
-Druid Hadoop依赖。 -
lib/*
-所有软件包,包含Druid包。 -
quickstart/*
-对此快速入门有用的文件。
启动Zookeeper
目前Druid依赖于Apache 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.10.0目录。在该目录中,执行如下命令:
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
脚本。
一旦每个服务开始,您就可以摄入数据。
摄入批量数据
我们在2015年9月12日之前提供了维基百科编辑的示例,让您开始使用。
本节介绍如何批量摄入数据,但您可以跳过来了解如何实时摄入数据流。Druid的流式传输可以在事件发生和可用于查询之间几乎无延迟地摄入数据。
维基百科数据集中的维度(可以过滤和拆分的属性)除了time以外是:
- 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.10.0目录的新终端窗口中将其POST到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"}
要查看您的摄取任务的状态,请转到您的overlord控制台:http://localhost:8090/console.html. 您可以定期刷新控制台,任务成功后,您将看到任务的“SUCCESS”状态。
您的摄取任务完成后,数据将由历史节点加载,并可在一两分钟内查询。您可以通过检查是否有数据源“wikiticker”,蓝色圆圈表示“完全可用”,监视在coordinator控制台中摄入数据的进度:http://localhost:8081/#/.
一旦数据完全可用,您可以立即查询 - 查看如何,跳到下面的查询数据部分。或者,如果要摄入其他数据集,请继续摄入自己的数据部分。
摄入流数据
要摄入流数据,我们将通过简单的HTTP API将事件推送到Druid。为了做到这一点,我们将使用[Tranquility],Druid的高级数据生产者库。
要下载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
我们在conf-quickstart/tranquility/server.json
中添加了一个配置文件,作为metrics数据源的Druid分发的一部分。
bin/tranquility server -configFile /conf-quickstart/tranquility/server.json
本节介绍如何使用Tranquility Server摄入数据,但是Druid还支持各种其他流式传输选项,包括流行的流处理系统,如Kafka,Storm,Samza和Spark Streaming。
此数据源的维度(可以过滤和拆分的属性)是灵活的。它被配置为无预定义结构的维度,这意味着它将接受JSON输入中的任何字段作为维度。
此数据源中的指标列(也称为度量值)可以是:
- 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。请注意,这可能需要几秒钟才能完成第一次运行,因为Druid资源必须分配给摄取任务。随后的POST应该快速完成。
将数据发送到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,Superset或Metabase来开始可视化您刚摄取的数据。
例如,如果您安装Pivot,您应该可以在浏览器中的localhost:9090上查看您的数据。
SQL等查询库
对于Druid还有更多的查询工具,包括SQL引擎和各种语言(如Python和Ruby)的库。有关更多信息,请参阅库列表。
集群设置
这个快速启动可以让您在单台机器上运行所有服务。下一步是摄入自己的数据。或者,您可以跳过直接运行分布式集群。
欢迎扫描二维码,关注公众号: