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 /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)的库。更多信息请参考库列表。

集群安装

此快速入门将使您能在单个计算机上运行的所有服务。 下一步是加载您自己的数据。 或者,您可以跳过去运行一个分布式集群。

原文链接:http://druid.io/docs/0.9.2/tutorials/quickstart.html

你可能感兴趣的:(Druid翻译二:Druid Quickstart)