1、下载单机环境必备工具
下载druid-0.10.1-bin.tar.gz和tranquility-distribution-0.8.2.tgz插件
http://druid.io/downloads.html
下载Zookeeper
http://mirrors.hust.edu.cn/apache/zookeeper/
下载Kafka
http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.0/kafka_2.11-0.11.0.0.tgz
2、上传解压druid-0.10.1-bin.tar.gz和tranquility-distribution-0.8.2.tgz
解压druid-0.10.1-bin.tar.gz到指定目录,比如:解压到/alidata/agent/目录下
# tar -zxvf druid-0.10.1-bin.tar.g -C /alidata/agent/
解压tranquility-distribution-0.8.2.tgz到druid-0.10.1目录下
# tar -zxvf tranquility-distribution-0.8.2.tgz -C /alidata/agent/druid-0.10.1
解压Zookeeper到指定目录,比如:/usr/local/
tar -zxvf zookeeper-3.4.9.tar.gz -C /usr/local/
解压Kafka到指定目录,比如:/usr/local/
tar -zxvf kafka_2.11-0.11.0.0.tgz -C /usr/local/
3、安装配置Zookeeper
重命名Zookeeper配置文件
zookeeper默认读取zoo.cfg配置文件,因此需重命名zoo_sample.cfg为zoo.cfg
# mv zoo_sample.cfg zoo.cfg
配置Zookeeper
# 配置zookeeper数据保存路径
dataDir=/tmp/zookeeper/data # 配置zookeeper日志输出路径
dataLogDir=/tmp/zookeeper/logs # 配置zookeeper连接端口
clientPort=2181
启动Zookeeper并查看状态
// 启动zookeeper
# bin/zkServer.sh start // 查看zookeeper状态
# bin/zkServer.sh status
4、安装配置Kafka
配置Kafka
# vi config/server.properties
---
# kafka日志输出路径
log.dirs=/tmp/kafka-logs # kafka分区数量
num.partitions=1 # kafka所连接zookeeper地址和端口,多个zookeeper间用英文逗号隔开,比如:"127.0.0.1:3000,127.0.0.1:3001".
zookeeper.connect=localhost:2181 # kafka连接zookeeper超时时间
zookeeper.connection.timeout.ms=6000
---
启动Kafka并查看状态
// 启动kafka
# bin/kafka-server-start.sh config/server.properties & // 查看kafka状态
# ps -ef | grep kafka
创建topics推送数据到Druid
根据Druid中创建的Schema【相当于数据的表结构】来确定需要创建的topic,从而实现将对应topic数据推送到druid中,比如:druid创建了jvm-metrics、request-metrics、server-metrics、jdbc-metrics、sql-metrics等Schema中 的topicPattern属性值对应的就是kafka的topic
// 创建jvm-metrics主题
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic jvm-metrics // 创建jdbc-metrics主题
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic jdbc-metrics // 创建sql-metrics主题
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic sql-metrics // 创建server-metrics主题
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic server-metrics // 创建request-metrics主题
# bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 5 --topic request-metrics
5、安装配置Druid
配置Druid
# vi conf-quickstart/druid/_common/common.runtime.properties
---
# 添加druid kafka插件
druid.extensions.loadList=["druid-kafka-eight"] # 配置zookeeper连接,如果zookeeper端口是2181可以不写端口号,多个zookeeper使用英文逗号分隔
druid.zk.service.host=localhost:12181
# 配置druid在zookeeper的存储路径
druid.zk.paths.base=/druid
---
初始化Druid
初始化druid生成log目录和var目录,log目录用于存放日志,var目录主要用于存储分片、分片缓存以及任务等
# 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
启动Tranquility-Kafka插件
Druid创建的Schema中的commit.periodMillis属性值默认为15秒指定了数据推送时间,tranquility-kafka插件将根据数据根据指定时间间隔将从对应kafka中消费的数据推送到Druid中,如果对实时性要求比较高的话,可以根据实际情况修改commit.periodMillis的值,单位为ms。比如druid已经创建jvm-metrics、sql-metrics、server-metrics、request-metrics、jdbc-metrics等五个Schema,启动Tranquility-Kafka插件读取对应Kafka信息推送到Druid中。
// 进入实时插件目录
# cd tranquility-distribution-0.8.2/ // 启动实时插件消费对应kafka消息,其中kafka-从通过kafka方式获取数据 -configFile:表示Schema路径
# bin/tranquility kafka -configFile ../conf/tranquility/kafka/jvm-metrics
# bin/tranquility kafka -configFile ../conf/tranquility/kafka/sql-metrics
# bin/tranquility kafka -configFile ../conf/tranquility/kafka/jdbc-metrics
# bin/tranquility kafka -configFile ../conf/tranquility/kafka/server-metrics
# bin/tranquility kafka -configFile ../conf/tranquility/kafka/request-metrics
6、Druid数据展示
可视化工具
目前有许多工具支持Druid数据的展示,目前比较流行的有如下集中工具:
grafana: grafana的druid插件,比较简陋。
superset:权限管理完善,图形可定制性也比较高,github持续更新,集合了metabase的Dashboard和pivot的查询可定制性优点,部署相对麻烦。
pivot:基于Plywood,部署方便,能构造复杂的查询。目前已经闭源了,没法二次开发。
Metabase:支持数据库种类多,启动方便,支持json查询。图形化查询,只能有一个聚合字段,两个维度。
如果觉得这些工具不能满足实际需求,也可以自己开发页面进行数据展示。
Http方式查询
Druid支持通过Http方式查询Druid数据,查询参数必须是标准的JSON格式,并且Header必须是Content-Type: application/json,否则无法正常查询数据
http://localhost:8082/druid/v2/?pretty