1. 概述
Druid的数据摄入主要包括两大类:
1. 实时输入摄入:包括Pull,Push两种
- Pull:需要启动一个RealtimeNode节点,通过不同的Firehose摄取不同种类的数据源。
- Push:需要启动Tranquility或是Kafka索引服务。通过HTTP调用的方式进行数据摄入
2. 离线数据摄入:可以通过Realtime节点摄入,也可以通过索引节点启动任务摄入
本文演示环节主要基于上一章部署的集群来进行
2. 实时数据摄入
2.1 Pull
由于Realtime Node 没有提供高可用,可伸缩等特性,对于比较重要的场景推荐使用 Tranquility Server or 或是Tranquility Kafka索引服务
2.2 Push
Indexing service在前文已经介绍过了,Tranquility 是一个Scala库,它通过索引服务实现数据实时的摄入。它之所以存在,是因为Indexing service API属于低层面的。Tranquility是对索引服务进行抽象封装, 对使用者屏蔽了 创建任务,处理分区、复制、服务发现和shema rollover等环节。
通过Tranquility 的数据摄入,可以分为两种方式
- Tranquility Server:发送方可以通过Tranquility Server 提供的HTTP接口,向Druid发送数据。
- Tranquility Kafka:发送发可以先将数据发送到Kafka,Tranquility Kafka会根据配置从Kafka获取数据,并写到Druid中。
2.2.1 Tranquility Server配置
配置流程如下
1. 开启Tranquility Server,在数据节点上编辑conf/supervise/data-with-query.conf 文件,将Tranquility Server注释放开
# Uncomment to use Tranquility Server
!p95 tranquility-server bin/tranquility server -configFile conf/tranquility/server.json
- 拷贝quick里面的server.json
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# cp conf-quickstart/tranquility/server.json conf/tranquility/
- 启动服务
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8# bin/supervise -c conf/supervise/data-with-query.conf
启动信息如下:
[Fri Dec 8 15:41:39 2017] Running command[tranquility-server], logging to[/root/imply-2.3.8/var/sv/tranquility-server.log]: bin/tranquility server -configFile conf/tranquility/server.json
- 发送数据
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/tutorial-tranquility-server
如果成功会打印出,表名产生了25条数据到druid里
{"result":{"received":25,"sent":25}}
- 查询数据
root@native-lufanfeng-4-5-24-140:~/imply-2.3.8/bin#./plyql -h localhost -p 8082 -q "SELECT server, SUM("count") AS "events", COUNT(*) AS "rows" FROM "tutorial-tranquility-server" GROUP BY server;"
┌──────────────────┬────────┬──────┐
│ server │ events │ rows │
├──────────────────┼────────┼──────┤
│ www1.example.com │ 1 │ 1 │
│ www2.example.com │ 5 │ 4 │
│ www3.example.com │