2.1加载数据到Druid
Druid支持流式(实时)和基于文件(批量)的数据提取方式。最常用的配置是:
- Files - 通过HDFS、S3、本地文件或者任何支持hadoop文件系统批量加载数据。如果你的数据集已经在这类文件系统中推荐使用这个方法。
- Stream push - 使用Tranquility(向Druid发送流的客户端)将实时数据流推送到Druid。如果你的数据集来自于流式系统,如Kafka, Storm, Spark Streaming或者自建的流系统,推荐使用此方法。
- Stream pull - 使用实时节点直接从外部数据源将数据流拉入Druid。
批处理、流式混合模式
- 在batch/streaming架构中,你可以混合使用批处理、流式的方法。在混合(Hybrid )模式中,您可以使用流式方法来执行初次提取,然后以批处理方式定期提取旧数据(通常是每几小时或者夜维)。当Druid重新获取时间范围内的数据时,新数据会自动替换早期提取的数据。
- 在某些故障情况下,当下所有的Druid流式数据传输方法都会导致数据的丢失或重复。通过批量重新摄取数据可以消除历史数据中的这种潜在的威胁。
- 如果您因任何原因需要修改数据,则批量重新提取还可让您重新提取数据。
2.1.1加载静态数据
通过修改JSON配置文件,读取存放在HDFS或者本地的文件然后提交索引任务,加载到Druid。出于篇幅限制,放上官网翻译教程Demo。
输入命令向Druid提交任务。
curl -X
'POST'-H
'Content-Type:application/json'-d @quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
如果成功提交会生成:
{"task":
"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
数据加载完后可以在 http://localhost:8090/console.html.看到数据已经完全加载进去 了
2.1.2加载流式数据
本文以kafka为例演示流数据如何加载。
启动kafka
执行如下指令启动kafka broker:
./bin/kafka-server-start.sh config/server.properties
创建一个名称为metrics的topic用来接收数据:
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1
发送示例数据
下面就可以开始通过console producer向kafka对应的topic发送数据了!
在Druid目录下执行如下指令:
bin/generate-example-metrics
在kafka目录下执行:
./bin/kafka-console-producer.sh --broker-
listlocalhost:
9092--topic metrics
现在kafka-console-producer就开始等待数据的输入了,复制刚生成的示例数据并粘贴到kafka-console-producer控制台终端,回车确认
按Ctrl+D退出,数据查询可以参考后面,当然也可以参考下文去加载自定义数据集
加载自定义kafka数据集
目前为止,我们已经按照Druid发布版本中的数据提取规范,将数据从kafka加载到了Druid。每一个数据提取规范都是为了特定的数据集设计的,也可以通过自定义提取规范来加载自定义数据。
自定义数据提取规范,可以按需修改conf-quickstart/tranquility/kafka.json配置文件
- dataSchema,使用的数据集名称
- timestampSpec,哪个是时间字段
- dimensionsSpec,哪些能作为维度字段
- metricsSpec,哪些能作为度量进行计算
例子:Demo
2.2数据查询
直接查询
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
可视化查询
通过Imply安装的pivot查询
SQL查询或者其他库
三、单机安装
3.1安装环境
- Java 8 or better
- Node.js 4.5.x or better
- Linux, Mac OS X, or other Unix-like OS (Windows is not supported)
- At least 4GB of RAM
本文使用Imply套件安装,它包括Druid组件,实时数据写入服务(tranquility),SQL查询组件,图形化数据展示页面(Pivot),zookeeper协调服务。
在安装之前需要先安装node,
node下载地址:https://nodejs.org/en/download/
imply下载地址:http://imply.io/download
node安装完成后使用下列命令检查:
node –version
3.2imply安装
- 从https://imply.io/get-started 下载最新版本安装包
- tar -xzf imply-2.3.9.tar.gz
- cd imply-2.3.9
目录说明如下:
- bin/ - run scripts for included software.
- conf/ - template configurations for a clustered setup.
- conf-quickstart/* - configurations for the single-machine quickstart.
- dist/ - all included software.
- quickstart/ - files related to the single-machine quickstart.
启动服务
bin/supervise -c conf/supervise/quickstart.conf
服务停止与重启
bin/service –down
Bin/service –restart $(服务名称)
导入测试数据
bin/post-index-task --file quickstart/ wikipedia-index.json
实时导入:
借助tranquility
bin/generate-example-metrics | curl –XPOST –H’Content-Type:application/json’ –data-binary @- http://localhost:8200/v1/post/metrics
返回结果:{“result”:{“received”:25,”sent”:25}}
可视化控制台
- overlord 控制页面:http://localhost:8090/console.html.
- druid集群页面:http://localhost:8081
- 数据可视化页面:http://localhost:9095
通过HTTP Post请求查询,请求TopN信息查询,HTTP查询结果也是Json.
通过PlySL利用SQL查询