天天看点

Druid 单机环境环境要求开始ZK安装启动druid服务批量加载数据加载流数据Query data

druid 可以运行在单机环境下,也可以运行在集群环境下。简单起见,我们先从单机环境着手学习。

java7 或者更高版本

linux, macos或者其他unix系统(不支持windows系统)

8g内存

2核cpu

下载并安装druid

文件夹中有如下几个目录:

license      许可证

bin/            可执行脚本

conf/*      在集群环境下的配置文件

conf-quickstart/*        quickstart的配置文件

extensions/*       druid所有的扩展文件

hadoop-dependencies/* druid的hadoop扩展文件

lib/*       druid 依赖的核心软件包

quickstart/*     quickstart的数据文件

     druid的分布式协同需要依赖zookeeper,所以我们需要安装zk

     启动zk后,我们就可以启动druid的服务了。 首先进入到druid0.9.1.1的根目录,执行

     druid会自动创建一个var目录, 内含俩个目录,一个是druid, 用于存放本地环境下hadoop的临时文件,索引日志,segments文件及缓存 和 任务的临时文件。 另一个是tmp用于存放其他临时文件。

      接下来就可以在控制台启动druid服务了。 在单机情况下,我们可以在一台机器上启动所有的druid服务进程,分终端进行。 在分布式生产集群的环境下, druid的服务进程同样也可以在一起启动。

     druid服务进程启动后,可以在控制台看到相应的日志信息。

     我前一篇文章中提到过druid有几种节点, 上面的启动命令,对应的就是druid的各种节点

historical 为historical nodes节点进程。主要用于查询时从deepstroage 加载segments。

broker 为broker nodes 节点进程。 主要为接收客户端任务,任务分发,负载,以及结果合并等。

coordinator 为 coordinator nodes 节点进程。   主要负责segments的管理和分发。

<code>overlord 为 overload nodes 节点进程。 </code><code>middlemanager 为 middlemanager nodes 节点进程。   overload 和 middlemanager是创建索引的主要服务进程, 具体会在接下来的章节中详细介绍</code>

     如果想关闭服务,直接在控制台ctrl + c 就可以了。 如果你彻底清理掉之前的内容,重新开始,需要在关闭服务后,删除目录下的var 文件, 重新执行init脚本。

     服务启动之后,我们就可以将数据load到druid中进行查询了。在druid0.9.1.1的安装包中,自带了2015-09-12的wikiticker数据。我们可以用此数据来作为我们druid的学习实例。

     首先我们看一下wikipedia的数据, 除了时间之外,包含的维度(dimensions)有:

channel

cityname

comment

countryisocode

countryname

isanonymous

isminor

isnew

isrobot

isunpatrolled

metrocode

namespace

page

regionisocode

regionname

user

   度量(measures) 我们可以设置如下:

count

added

deleted

delta

user_unique

   确定了度量,维度之后,接下来我们就可以导入数据了。首先,我们需要向druid提交一个注入数据的任务,并将目录指向我们需要加载的数据文件wikiticker-2015-09-12-sampled.json

druid是通过post请求的方式提交任务的, 上面我们也讲过,overload node 用于数据的加载,所以需要在overload节点上执行post请求, 目前单机环境,无需考虑这个。

     在druid根目录下执行

其中<code>wikiticker-index.json 文件指明了数据文件的位置,类型,数据的schema(如度量,维度,时间,在druid中的数据源名称等)等信息, 之后我也会详细的介绍,大家也可以从官网上查</code>

     当控制台打印如下信息后,说明任务提交成功

当名为wikiticker的datasource 有个蓝色的小圈,并显示fully available时,说明数据已经可以了。可以执行查询操作了。

     为了实现流数据的加载,我们可以通过一个简单http api来向druid推送数据,而tranquility就是一个不错的数据生产组件

     下载并安装tranquility

      druid目录中自带了一个配置文件 <code>conf-quickstart/tranquility/server.json</code>  启动tranquility服务进程, 就可以向druid的 metrics datasource 推送实时数据。

这一部分向大家介绍了如何通过tranquility服务来加载流数据, 其实druid还可以支持多种广泛使用的流式框架, 包括kafka, storm, samza, and spark streaming等

       流数据加载中,维度是可变的,所以在schema定义的时候无需特别指明维度,而是将数据中任何一个字段都当做维度。而该datasource的度量则包含

value_sum (derived from <code>value</code> in the input)

value_min (derived from <code>value</code> in the input)

value_max (derived from <code>value</code> in the input)

 我们采用了一个脚本,来随机生成度量数据,导入到这个datasource中

执行完成后会返回

这表明http server 从你这里接收到了25条数据,并发送了这25条数据到druid。 在你第一次运行的时候,这个过程需要花一些时间,一段数据加载成功后,就可以查询了。

     接下来就是数据查询了,我们可以采用如下几种方式来查询数据

     druid提供了基于json的富文本查询方式。在提供的示例中,<code>quickstart/wikiticker-top-pages.json</code>  是一个topn的查询实例。

          druid是面向用户分析应用的完美方案, 有很多开源的应用支持druid的数据可视化, 如pivot, caravel 和 metabase等

          有许多查询组件供我们使用,如sql引擎, 还有其他各种语言提供的组件,如python和ruby。 具体如下:

本篇主要是讲了单机环境下druid的搭建以及使用, 并使用druid安装包自带的例子给大家做了展示。 下一篇我讲介绍在集群环境下druid如何安装及使用。

Druid 单机环境环境要求开始ZK安装启动druid服务批量加载数据加载流数据Query data