安装Apache Druid
1. Apache Druid安装
安装包下载地址:http://druid.apache.org/downloads.html

当前最新的版本是0.20.0,支持很多丰富功能,因此我们使用该版本。首先下载下来该安装包,并上传到服务器指定目录下/usr/local/gupao,并解压改文件:

我们这里为了方便操作,启动单机版即可,但单机版启动会自动加载Zookeeper,集群版可以自由配置Zookeeper外部节点,但单机版不行。我们前面Kafka也用到了Zookeeper,为了让2个Zookeeper不冲突,我们需要将要安装的Apache Druid的Zookeeper端口换掉,把2181换成3181,在apache-druid-0.20.0目录下执行如下2行命令即可:
sed -i "s/2181/3181/g" `grep 2181 -rl ./`
sed -i "s/druid.zk.service.host=localhost/druid.zk.service.host=localhost:3181/g" `grep druid.zk.service.host=localhost -rl ./`
说明:sed -i "s/原字符串/新字符串/g" grep 原字符串 -rl 所在目录
Druid的时区和国内时区不一致,会比我们的少8个小时,我们需要修改配置文件,批量将时间+8,代码如下:
sed -i "s/Duser.timezone=UTC/Duser.timezone=UTC+8/g" `grep Duser.timezone=UTC -rl ./`
接下来进入到/usr/local/gupao/apache-druid-0.20.0/bin目录下启动Apache Druid即可:
./start-micro-quickstart
启动后,等待20秒我们可以访问Apache Druid的控制台http://192.168.100.130:8888/效果如下:

注意:如果需要后台运行,可以直接执行./start-micro-quickstart &
2. 数据摄入

Apache Druid数据摄入方式支持多种,可以批量从文件中摄入,也可以从实时数据流中摄入,我们接下来对这2种摄入方式分别进行讲解。
2.1 文件批量摄入
文件批量摄入主要是把现有的数据批量导入到Apache Druid中,典型的应用就是历史数据分析,我们项目中可以分析历史订单。大家可能会问,数据不是已经存在数据库了吗,为什么还要用Apache Druid做分析?我们这里如果是PB级别数据,用数据库查询很有可能超时,但用Apache Druid查询,效率极高,是MySQL数据库的几百倍甚至更高。
我们按照官网文档学习一下批量文件摄入,打开http://druid.apache.org/docs/latest/tutorials/index.html按照该文档一步一步实现。
点击控制台中的 Load data,选择 Local disk,然后点击 Connect data

在 Base directory 中输入 quickstart/tutorial/, 在 File filter 中输入 wikiticker-2015-09-12-sampled.json.gz。 Base directory 和 File filter 分开是因为可能需要同时从多个文件中摄取数据。
点击 Preview,确保您看到的数据是正确的。
数据定位后,您可以点击"Next: Parse data"来进入下一步。

数据加载器将尝试自动为数据确定正确的解析器。在这种情况下,它将成功确定json。可以随意使用不同的解析器选项来预览Druid如何解析您的数据。
json 选择器被选中后,点击 Next:Parse time 进入下一步来决定您的主时间列。

Druid的体系结构需要一个主时间列(内部存储为名为__time的列)。如果您的数据中没有时间戳,请选择 固定值(Constant Value) 。在我们的示例中,数据加载器将确定原始数据中的时间列是唯一可用作主时间列的候选者。
点击"Next:..."两次完成 Transform 和 Filter 步骤。您无需在这些步骤中输入任何内容。

在这里,您可以调整如何在Druid中将数据拆分为多个段。 由于这是一个很小的数据集,因此在此步骤中无需进行任何调整。
点击完成 Tune 步骤,进入到 Publish 步。

在 Publish 步骤中,我们可以指定Druid中的数据源名称,让我们将此数据源命名为 Wikipedia。最后,单击 Next 来查看您的摄取规范。

这就是您构建的规范,为了查看更改将如何更新规范是可以随意返回之前的步骤中进行更改,同样,您也可以直接编辑规范,并在前面的步骤中看到它,最后点击submit。
您可以进入任务视图,重点关注新创建的任务。任务视图设置为自动刷新,请等待任务成功。
当一项任务成功完成时,意味着它建立了一个或多个段,这些段现在将由Data服务器接收。
从标题导航到 Datasources 视图。

等待直到您的数据源(Wikipedia)出现,加载段时可能需要几秒钟。
一旦看到绿色(完全可用)圆圈,就可以查询数据源。此时,您可以转到 Query 视图以对数据源运行SQL查询。

2.2 实时数据流摄入
实时数据流摄入就是我们项目中需要用到的,我们可以利用Kafka实时数据流收集日志,再用Apache Druid消费实时数据流数据。
从kafka读取实时数据流操作文档http://druid.apache.org/docs/latest/tutorials/tutorial-kafka.html
控制台中我们选择Apache Kafka,再点击Connect data

在 Bootstrap servers 输入 192.168.100.130:9092, 在 Topic 输入 mslogs
点击 Preview 后确保您看到的数据是正确的
数据定位后,您可以点击"Next: Parse data"来进入下一步。

数据加载器将尝试自动为数据确定正确的解析器。在这种情况下,它将成功确定json。可以随意使用不同的解析器选项来预览Druid如何解析您的数据。
json 选择器被选中后,点击 Next:Parse time 进入下一步来决定您的主时间列。
Druid的体系结构需要一个主时间列(内部存储为名为__time的列)。如果您的数据中没有时间戳,请选择 固定值(Constant Value) 。在我们的示例中,数据加载器将确定原始数据中的时间列是唯一可用作主时间列的候选者。
点击"Next:..."两次完成 Transform 和 Filter 步骤。您无需在这些步骤中输入任何内容。

在Configure schema中时间精度选择none。
我们将该数据源命名为 mslogs
最后点击 Next 预览摄入规范:

此时提交,然后请求一次http://192.168.100.130/msitems/100001956475.html再看Apache Druid的控制台,会多一个数据库mslogs。
