Druid 单机环境

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:
druid 可以运行在单机环境下,也可以运行在集群环境下。简单起见,我们先从单机环境着手学习。

环境要求

  • java7 或者更高版本
  • linux, macOS或者其他unix系统(不支持windows系统)
  • 8G内存
  • 2核CPU

开始

下载并安装druid
curl -http://static.druid.io/artifacts/releases/druid-0.9.1.1-bin.tar.gz
tar -xzf druid-0.9.1.1-bin.tar.gz
cd druid-0.9.1.1
文件夹中有如下几个目录:
  • LICENSE      许可证
  • bin/            可执行脚本
  • conf/*      在集群环境下的配置文件
  • conf-quickstart/*        quickstart的配置文件
  • extensions/*       druid所有的扩展文件
  • hadoop-dependencies/* druid的hadoop扩展文件
  • lib/*       druid 依赖的核心软件包
  • quickstart/*     quickstart的数据文件

ZK安装

     druid的分布式协同需要依赖zookeeper,所以我们需要安装zk
curl http://www.gtlib.gatech.edu/pub/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz -o zookeeper-3.4.6.tar.gz
tar -xzf zookeeper-3.4.6.tar.gz
cd zookeeper-3.4.6
cp conf/zoo_sample.cfg conf/zoo.cfg
./bin/zkServer.sh start

启动druid服务

     启动zk后,我们就可以启动druid的服务了。 首先进入到druid0.9.1.1的根目录,执行
bin/init
     druid会自动创建一个var目录, 内含俩个目录,一个是druid, 用于存放本地环境下hadoop的临时文件,索引日志,segments文件及缓存 和 任务的临时文件。 另一个是tmp用于存放其他临时文件。
      接下来就可以在控制台启动druid服务了。 在单机情况下,我们可以在一台机器上启动所有的druid服务进程,分终端进行。 在分布式生产集群的环境下, druid的服务进程同样也可以在一起启动。
ava `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
     druid服务进程启动后,可以在控制台看到相应的日志信息。
     我前一篇文章中提到过druid有几种节点, 上面的启动命令,对应的就是druid的各种节点
  • historical 为Historical Nodes节点进程。主要用于查询时从deepstroage 加载segments。
  • broker 为Broker Nodes 节点进程。 主要为接收客户端任务,任务分发,负载,以及结果合并等。
  • coordinator 为 Coordinator Nodes 节点进程。   主要负责segments的管理和分发。
  • overlord 为 Overload Nodes 节点进程。 middleManager 为 MiddleManager Nodes 节点进程。   overload 和 middleManager是创建索引的主要服务进程, 具体会在接下来的章节中详细介绍
     如果想关闭服务,直接在控制台ctrl + c 就可以了。 如果你彻底清理掉之前的内容,重新开始,需要在关闭服务后,删除目录下的var 文件, 重新执行init脚本。

批量加载数据

     服务启动之后,我们就可以将数据load到druid中进行查询了。在druid0.9.1.1的安装包中,自带了2015-09-12的wikiticker数据。我们可以用此数据来作为我们druid的学习实例。
     首先我们看一下wikipedia的数据, 除了时间之外,包含的维度(dimensions)有:
  • channel
  • cityName
  • comment
  • countryIsoCode
  • countryName
  • isAnonymous
  • isMinor
  • isNew
  • isRobot
  • isUnpatrolled
  • metroCode
  • namespace
  • page
  • regionIsoCode
  • regionName
  • user
   度量(measures) 我们可以设置如下:
  • count
  • added
  • deleted
  • delta
  • user_unique
   确定了度量,维度之后,接下来我们就可以导入数据了。首先,我们需要向druid提交一个注入数据的任务,并将目录指向我们需要加载的数据文件wikiticker-2015-09-12-sampled.json
Druid是通过post请求的方式提交任务的, 上面我们也讲过,overload node 用于数据的加载,所以需要在overload节点上执行post请求, 目前单机环境,无需考虑这个。
     在druid根目录下执行
curl -'POST' -'Content-Type:application/json' -@quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
其中 wikiticker-index.json 文件指明了数据文件的位置,类型,数据的schema(如度量,维度,时间,在druid中的数据源名称等)等信息, 之后我也会详细的介绍,大家也可以从官网上查
     当控制台打印如下信息后,说明任务提交成功
{"task":"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
     可以在overload控制台  http://localhost:8090/console.html来查看任务的运行情况, 当状态为“SUCCESS”时, 说明任务执行成功。
     当数据注入成功后,historical node会加载这些已经注入到集群的数据,方便查询,这大概需要花费1-2分钟的时间。 你可以在coordinator 控制台 http://localhost:8081/#/来查看数据的加载进度
当名为wikiticker的datasource 有个蓝色的小圈,并显示fully available时,说明数据已经可以了。可以执行查询操作了。

加载流数据

     为了实现流数据的加载,我们可以通过一个简单http api来向druid推送数据,而tranquility就是一个不错的数据生产组件
     下载并安装tranquility
curl -http://static.druid.io/tranquility/releases/tranquility-distribution-0.8.0.tgz
tar -xzf tranquility-distribution-0.8.0.tgz
cd tranquility-distribution-0.8.0
      druid目录中自带了一个配置文件  conf-quickstart/tranquility/server.json  启动tranquility服务进程, 就可以向druid的 metrics datasource 推送实时数据。
bin/tranquility server -configFile <path_to_druid_distro>/conf-quickstart/tranquility/server.json
这一部分向大家介绍了如何通过tranquility服务来加载流数据, 其实druid还可以支持多种广泛使用的流式框架, 包括Kafka, Storm, Samza, and Spark Streaming等
       流数据加载中,维度是可变的,所以在schema定义的时候无需特别指明维度,而是将数据中任何一个字段都当做维度。而该datasource的度量则包含
  • count
  • value_sum (derived from value in the input)
  • value_min (derived from value in the input)
  • value_max (derived from value in the input)
 我们采用了一个脚本,来随机生成度量数据,导入到这个datasource中
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/metrics
执行完成后会返回
{"result":{"received":25,"sent":25}}
这表明http server 从你这里接收到了25条数据,并发送了这25条数据到druid。 在你第一次运行的时候,这个过程需要花一些时间,一段数据加载成功后,就可以查询了。

Query data

     接下来就是数据查询了,我们可以采用如下几种方式来查询数据

Direct Druid queries      直接通过druid查询

     druid提供了基于json的富文本查询方式。在提供的示例中, quickstart/wikiticker-top-pages.json  是一个topN的查询实例。
curl --H'Content-Type: application/json' -XPOST --data-binary @quickstart/wikiticker-top-pages.json http://localhost:8082/druid/v2/?pretty

Visualizing data 数据可视化

          druid是面向用户分析应用的完美方案, 有很多开源的应用支持druid的数据可视化, 如pivot, caravel 和 metabase等

SQL and other query libraries 查询组件

          有许多查询组件供我们使用,如sql引擎, 还有其他各种语言提供的组件,如python和ruby。 具体如下:
          python:      druid-io/pydruid
          R:                    druid-io/RDruid
          JavaScript:   implydata/plywood
                                7eggs/node-druid-query
          Clojure:       y42/clj-druid
          Ruby:           ruby-druid/ruby-druid
                               redBorder/druid_config
           SQL:            Apache Calcite
                               implydata/plyql
           PHP:      pixelfederation/druid-php
本篇主要是讲了单机环境下druid的搭建以及使用, 并使用druid安装包自带的例子给大家做了展示。 下一篇我讲介绍在集群环境下Druid如何安装及使用。
                                      qrcode_for_gh_5771c4ac5408_1280.jpg

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
28天前
|
Kubernetes 容器
搭建K8S环境单机K8S集群
搭建K8S环境单机K8S集群
30 0
|
3月前
|
存储 消息中间件 druid
Apache Druid 的集群设计与工作流程
Apache Druid 的集群设计与工作流程
52 0
|
4月前
|
Shell 测试技术 Linux
单节点Seata支持多环境配置隔离
单节点Seata支持多环境配置隔离
52 7
|
8月前
|
SQL 监控 druid
深入了解Druid连接池:高性能数据库连接管理工具
在现代的应用开发中,数据库连接池是优化数据库访问性能的关键。Druid连接池作为一款高性能的数据库连接管理工具,为我们提供了强大的连接池功能和监控能力。本文将深入探讨Druid连接池的基本概念、特点,以及如何在实际应用中使用它进行高效的数据库连接管理。
840 0
|
9月前
|
SQL 监控 druid
springboot 集成Druid的监控数据库连接池的最佳实践
Druid是一种高性能的开源数据库连接池,它在Java应用程序中被广泛使用。Druid连接池提供了连接管理、连接池监控、SQL性能监控等功能,能够有效地管理数据库连接,并提供丰富的性能指标和监控报告。 Druid连接池的一些主要特点包括: 连接池管理:Druid可以帮助你管理数据库连接,包括连接的创建、销毁和重用。它提供了连接池配置选项,可以灵活地调整连接池的大小、最大等待时间、验证查询等参数。 监控数据统计:Druid连接池提供了丰富的监控指标,如连接数、活跃线程数、执行SQL次数、慢查询次数、错误次数等。通过这些统计数据,你可以实时了解连接池的使用情况和性能状况。 SQL性能监控:
1769 1
|
存储 XML 分布式计算
Druid 0.17 入门(2)—— 安装与部署
在Druid快速入门其实已经简单的介绍过最简化配置的单节点部署,本文我们将详细描述Druid的多种部署方式,对于测试开发环境可以选用轻量的单机部署方式,而生产环境我们最好选用集群部署的方式,确保系统的高可用性。
424 0
Druid 0.17 入门(2)—— 安装与部署
|
开发框架 JavaScript druid
SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus
在引入相关数据库持久化相关依赖库之前,我们可以考虑到,当我们因业务开发需要,引入各种各样的依赖库时,Jar包冲突是我们必须面对的一个问题,Spring为了解决这些Jar包的冲突,推出了各种bom,最著名的就是Spring IO Platform bom,其中最核心的三个是:spring-framework-bom、spring-boot-dependencies、platform-bom。我们这里参考Spring管理Jar包的方式,新建一个GitEgg-Platform平台工程,提供各种第三方组件的配置及自定义方法,使用子工程gitegg-platform-bom统一管理GitEgg自定义方法
310 0
SpringCloud微服务实战——搭建企业级开发框架(五):数据库持久化集成MySql+Druid+MyBatis-Plus
|
SQL 监控 druid
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
本篇文章中介绍了数据库连接池Alibaba Druid的组成部分以及Druid的作用和基本配置。详细说明了Druid的基本架构,分别介绍了Druid中的实时节点,历史节点,查询节点,协调节点以及索引服务。通过本篇文章的学习,可以对数据库连接池Druid的参数配置和基本架构有清楚的认识。
1249 34
Druid数据库连接池的详细解析!分析说明数据库连接池Druid的参数配置和基本架构
|
SQL 缓存 监控
【Druid】Druid监控SSM项目性能-配置与实例
【Druid】Druid监控SSM项目性能-配置与实例
303 0
|
SQL 监控 druid
Druid 监控JavaWeb项目的数据库访问性能
Druid 监控JavaWeb项目的数据库访问性能
350 0