文章目录

  • 应用场景
  • 特点
  • 设计原则
  • 数据格式
  • 相关软件对比
  • 总体架构
  • 安装环境
  • 服务运行

应用场景

从技术定位上看,Druid 是一个分布式的数据分析平台,在功能上也非常像传统的OLAP系统,但是在实现方式上做了很多聚焦和取舍,为了支持更大的数据量、更灵活的分布式部署、更实时的数据摄入,Druid 舍去了OLAP 查询中比较复杂的操作,例如JOIN 等。相比传统数据库,Druid 是一种时序数据库,按照一定的时间粒度对数据进行聚合,以加快分析查询。
适用于广告分析、互联网广告系统监控以及网络监控等海量不变数据写入的场景。

特点

对应目前大多数Druid的使用场景来说,Druid本质上是一个分布式时序数据库。其特点有以下几个方面:

  • 数据吞吐量大。
  • 支持流式数据摄入和实时。
  • 查询灵活且快。
  • 社区支持力度大。
  • 查询上通过plyql工具支持少量sql。(也在逐步更新)

设计原则

  • 快速查询(Fast Query)
    部分数据的聚合(Partial Aggregate)+内存化(In-emory)+索引(Index)。
  • 水平扩展能力(Horizontal Scalability)
    分布式数据(Distributed Data)+ 并行化查询(Parallelizable Query)。
  • 实时分析(Realtime Analytics)
    不可变的过去,只追加的未来(Immutable Past,Append-Only Future)。

数据格式

在数据摄入之前,首先需要定义一个数据源(DataSource),每个集合包含三个部分。

  • 时间列(TimeStamp)
    表明每行数据的时间值,默认只用UTC时间格式且精确到毫秒。这个列是数据聚合与范围查询的重要维度
  • 维度列(Dimension)
    用来表示数据行的各个类别信息
  • 指标列(Metric)
    用于聚合和计算的列

相关软件对比

  • OpenTSDB
    OpenTSDB预先定义好维度Tag,采用精巧的数据组织方式放入HBase中,基于HBase有很好的查询效率,但是在任意维度组合查询下,效率会明显降低。
  • influxDB
    都内置HTTP接口,使用方便。influxDB采用golang开发,开箱即用,有类SQL的查询语句。而Druid仅支持部分sql,目前influxDB只有单机版是开源的,集群需要付费。
  • kylin
    kylin是通过预计算和定期任务,把很多数据事先存储在以HBase为基础的OLAP Cube中,而Druid是实时聚合,最大的优势是支持sql访问,可以兼容传统的BI工具和报表,在性能上没有太大优势。

总体架构

Druid是类LSM-tree架构,不同的是Druid不提供日志及实时WAL(预写日志)原则,实时数据首先会被直接加载进实时节点的内存中的堆结构,当条件满足时,缓存区里的数据会被重写到硬盘上形成一个数据块,同事实时节点又会立即将新生成的数据块加载到内存的非堆区,因此无论是堆结构还是缓存区的数据,都是能够被查询节点查询。这种架构安排实际上也在一点程度上借鉴了命令查询职责分离模式(CQRS)

安装环境

我们学习搭建采用Imply组合套件安装包。安装条件如下:

  • linux系统,暂不支持windows。

  • Java7及以上。(没有的话,启动时会用异常信息提示)

  • NodeJS 4.x以上。(没有的话,启动时会用异常信息提示)

  • 下载命令wget https://static.imply.io/release/imply-1.3.1.tar.gz

服务运行

使用tar命令解压后进入imply-1.3.1目录,druid组件会占用2181、8081、8090、9095等等端口,启动前可以用lsof命令检查下是否有进程占用,不然启动是日志会提示异常。然后我执行命令:
nohup bin/supervise -c conf/supervise/quickstart.conf > quickstart.log &
启动我们的单据版。我们查看quickstart.log启动日志,会发现有zk、coordinator、broker、historical、overlord、middleManager、pivot、tranquility-server等服务都先后被启动,如果提示fail或者exit,就要查看下具体服务启动失败原因了。
另外通过bin/service --down 可以退出当前所有服务,也可以通过--stop指定特定的服务。启动正常的话我们可以打开http://localhost:9095 查看Pivot页面。能打开证明启动正常的。但是里面没有数据,我们可以用命令添加一些测试数据:
bin/post-index-task --file quickstart/wikiticker-index.json,这是维基百科的一些测试数据。成功的话会有以下日志返回。

root@fp-bd5:/opt/imply-1.3.1# bin/post-index-task --file quickstart/wikiticker-index.json
Task started: index_hadoop_wikiticker_2019-03-11T11:53:30.328Z
Task log:     http://localhost:8090/druid/indexer/v1/task/index_hadoop_wikiticker_2019-03-11T11:53:30.328Z/log
Task status:  http://localhost:8090/druid/indexer/v1/task/index_hadoop_wikiticker_2019-03-11T11:53:30.328Z/status
Task index_hadoop_wikiticker_2019-03-11T11:53:30.328Z still running...
Task index_hadoop_wikiticker_2019-03-11T11:53:30.328Z still running...
Task index_hadoop_wikiticker_2019-03-11T11:53:30.328Z still running...
Task index_hadoop_wikiticker_2019-03-11T11:53:30.328Z still running...
Task finished with status: SUCCESS

这是可以通过http://localhost:9095 看到我们导入的数据:

通过plyql工具利用sql语句查询
bin/plyql --host fp-bd5:8082 -v -q "SELECT page , SUM(count) AS Edits FROM wikiticker WHERE '2016-06-27T00:00:00' <= __time AND __time < '2016-06-28T00:00:00' group BY page ORDER BY Edits DESC LIMIT 5"
会有以下返回

┌──────────────────────────────────────────────────────────┬───────┐
│ page                                                     │ Edits │
├──────────────────────────────────────────────────────────┼───────┤
│ Copa América Centenario                                  │ 29    │
│ User:Cyde/List of candidates for speedy deletion/Subpage │ 16    │
│ Wikipedia:Administrators' noticeboard/Incidents          │ 16    │
│ 2016 Wimbledon Championships – Men's Singles             │ 15    │
│ Wikipedia:Administrator intervention against vandalism   │ 15    │
└──────────────────────────────────────────────────────────┴───────┘

通过http协议访问实时导入与查询

bin/generate-example-metrics |curl -XPOST -H'Content-Type:application/json' --data-binary @- http://fp-bd5:8200/v1/post/metrics

返回

{"result":{"received":25,"sent":25}}

本文参考:《Druid实时大数据分析原理与实践》

Druid的简介及安装使用相关推荐

  1. 2021年大数据ELK(二十一):Logstash简介和安装

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Logstash简介和安装 一.简介 1.经典架构 2.对比Flume 3.对 ...

  2. 扩增子分析QIIME2(2018.6). 1简介和安装

    扩增子分析QIIME2. 1简介和安装 QIIME2版本 2018.6 简介 优点 学习思路 什么是QIIME 2? 核心概念 安装 原生安装QIIME2 虚拟机安装 使用VirtualBox方式安装 ...

  3. db2top详细使用方法_Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略

    Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...

  4. python compiler库_Python之compiler:compiler库的简介、安装、使用方法之详细攻略

    Python之compiler:compiler库的简介.安装.使用方法之详细攻略 目录 compiler库的简介 compiler库的安装 compiler库的使用方法 compiler库的简介 根 ...

  5. Pandas简明教程:一、Pandas简介与安装

    文章目录 1.Pandas简介 2.为何要用Pandas? 3.知识.技能与环境的准备 4.Pandas的安装与相关辅助资料 本系列教程教程完整目录: 1.Pandas简介 关于Pandas的介绍在百 ...

  6. Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略

    Py之Xlrd:Xlrd简介.安装.使用方法(读取xlsx文件的shee表头名/总行数/总列数.每一行的内容.指定列的内容)之详细攻略  导读      xlrd,xlwt和xlutils是用Pyth ...

  7. Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略

    Python之ffmpeg-python:ffmpeg-python库的简介.安装.使用方法之详细攻略 目录 ffmpeg-python库的简介 ffmpeg-python库的安装 ffmpeg-py ...

  8. Python之fastai:fastai库的简介、安装、使用方法之详细攻略

    Python之fastai:fastai库的简介.安装.使用方法之详细攻略 目录 fastai库的简介 fastai库的安装 fastai库的使用方法 1.计算机视觉分类

  9. Python之tushare:tushare库的简介、安装、使用方法之详细攻略

    Python之tushare:tushare库的简介.安装.使用方法之详细攻略 目录 tushare库的简介 tushare库的安装 tushare库的使用方法 1.基础用法 tushare库的简介 ...

  10. Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略

    Dataset之babyboom.dat:babyboom.dat数据集的简介.安装.使用方法之详细攻略 目录 babyboom.dat数据集的简介.安装.使用方法 babyboom.dat数据集的简 ...

最新文章

  1. 亿级京东应用架构设计与治理
  2. 20分钟学会mysql_5分钟学会mysql基本操作
  3. HTTPS 建立连接的过程
  4. 循环神经网络教程Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs
  5. SQL Server 2005无法输入中文的解决方案
  6. 解决 【xshell 5 不能使用退格键和Delete建】的问题
  7. JavaScript 异步执行的学习笔记 - 什么是事件循环 Event loop?
  8. 云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台
  9. mysql二进制日志特点_MySQL二进制日志分析-概述篇
  10. 从 SAS 到 NVMe,换个底盘就完儿事了?
  11. python 小程序搜索排名-用python2.7.9 写个小程序搜索某个目录下行有某关键字
  12. 拓端tecdat|Python使用矩阵分解法找到类似的音乐
  13. Haskell生成数字的LED字符形式
  14. STRING网站分析蛋白质相互作用
  15. 平台型时间信号强度曲线_MR动态增强扫描时间-信号强度曲线在骨骼肌肉系统肿瘤定性诊断中的价值...
  16. Raki的读paper小记:REPRESENTATIONAL CONTINUITY FOR UNSUPERVISED CONTINUAL LEARNING
  17. python装饰器抽丝拨茧
  18. A Weakly Supervised Convolutional Network for Change Segmentation and Classification
  19. 史上最小白之CNN 以及 TextCNN详解
  20. 机器学习第五周神经网络 反向传播 嗷嗷好

热门文章

  1. 洲际酒店集团与蚂蚁集团合作,开启国际酒店品牌移动支付新时代
  2. 经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用
  3. scratch-gui 项目启动全过程
  4. 005 go-redis
  5. [solr] solr 测试 (python、curl、界面 )
  6. 企业微信 创建应用后如何构造网页授权 获取token 获取用户信息
  7. codeforces 1060E Sergey and Subway 树形dp
  8. [Unity Mirror] SyncVars
  9. 关于封装、打包特定谷歌浏览器(两个版本)
  10. 开发第一个Phaser3游戏