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
    
    
05-23 23:07