Druid的简介及安装使用
文章目录
- 应用场景
- 特点
- 设计原则
- 数据格式
- 相关软件对比
- 总体架构
- 安装环境
- 服务运行
应用场景
从技术定位上看,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的简介及安装使用相关推荐
- 2021年大数据ELK(二十一):Logstash简介和安装
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Logstash简介和安装 一.简介 1.经典架构 2.对比Flume 3.对 ...
- 扩增子分析QIIME2(2018.6). 1简介和安装
扩增子分析QIIME2. 1简介和安装 QIIME2版本 2018.6 简介 优点 学习思路 什么是QIIME 2? 核心概念 安装 原生安装QIIME2 虚拟机安装 使用VirtualBox方式安装 ...
- db2top详细使用方法_Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略
Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...
- python compiler库_Python之compiler:compiler库的简介、安装、使用方法之详细攻略
Python之compiler:compiler库的简介.安装.使用方法之详细攻略 目录 compiler库的简介 compiler库的安装 compiler库的使用方法 compiler库的简介 根 ...
- Pandas简明教程:一、Pandas简介与安装
文章目录 1.Pandas简介 2.为何要用Pandas? 3.知识.技能与环境的准备 4.Pandas的安装与相关辅助资料 本系列教程教程完整目录: 1.Pandas简介 关于Pandas的介绍在百 ...
- Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略
Py之Xlrd:Xlrd简介.安装.使用方法(读取xlsx文件的shee表头名/总行数/总列数.每一行的内容.指定列的内容)之详细攻略 导读 xlrd,xlwt和xlutils是用Pyth ...
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
Python之ffmpeg-python:ffmpeg-python库的简介.安装.使用方法之详细攻略 目录 ffmpeg-python库的简介 ffmpeg-python库的安装 ffmpeg-py ...
- Python之fastai:fastai库的简介、安装、使用方法之详细攻略
Python之fastai:fastai库的简介.安装.使用方法之详细攻略 目录 fastai库的简介 fastai库的安装 fastai库的使用方法 1.计算机视觉分类
- Python之tushare:tushare库的简介、安装、使用方法之详细攻略
Python之tushare:tushare库的简介.安装.使用方法之详细攻略 目录 tushare库的简介 tushare库的安装 tushare库的使用方法 1.基础用法 tushare库的简介 ...
- Dataset之babyboom.dat:babyboom.dat数据集的简介、安装、使用方法之详细攻略
Dataset之babyboom.dat:babyboom.dat数据集的简介.安装.使用方法之详细攻略 目录 babyboom.dat数据集的简介.安装.使用方法 babyboom.dat数据集的简 ...
最新文章
- 亿级京东应用架构设计与治理
- 20分钟学会mysql_5分钟学会mysql基本操作
- HTTPS 建立连接的过程
- 循环神经网络教程Recurrent Neural Networks Tutorial, Part 1 – Introduction to RNNs
- SQL Server 2005无法输入中文的解决方案
- 解决 【xshell 5 不能使用退格键和Delete建】的问题
- JavaScript 异步执行的学习笔记 - 什么是事件循环 Event loop?
- 云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台
- mysql二进制日志特点_MySQL二进制日志分析-概述篇
- 从 SAS 到 NVMe,换个底盘就完儿事了?
- python 小程序搜索排名-用python2.7.9 写个小程序搜索某个目录下行有某关键字
- 拓端tecdat|Python使用矩阵分解法找到类似的音乐
- Haskell生成数字的LED字符形式
- STRING网站分析蛋白质相互作用
- 平台型时间信号强度曲线_MR动态增强扫描时间-信号强度曲线在骨骼肌肉系统肿瘤定性诊断中的价值...
- Raki的读paper小记:REPRESENTATIONAL CONTINUITY FOR UNSUPERVISED CONTINUAL LEARNING
- python装饰器抽丝拨茧
- A Weakly Supervised Convolutional Network for Change Segmentation and Classification
- 史上最小白之CNN 以及 TextCNN详解
- 机器学习第五周神经网络 反向传播 嗷嗷好
热门文章
- 洲际酒店集团与蚂蚁集团合作,开启国际酒店品牌移动支付新时代
- 经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用
- scratch-gui 项目启动全过程
- 005 go-redis
- [solr] solr 测试 (python、curl、界面 )
- 企业微信 创建应用后如何构造网页授权 获取token 获取用户信息
- codeforces 1060E Sergey and Subway 树形dp
- [Unity Mirror] SyncVars
- 关于封装、打包特定谷歌浏览器(两个版本)
- 开发第一个Phaser3游戏