druid 特点:
- 分布式
- 劣势
- 实时分析
druid是数据存储系统。比原olap例如hive 要更实时, 便捷。
特点
- 列式存储
- 可扩展
- 大规模并发查询
- 实时批量处理
- 自愈,自平衡, 易操作
- 有效的预聚合和预计算
- 使用bitmap压缩
数据的摄入方式:
应用场景
- 适用于清洗好的记录实时录入,但不需要更新操作。如果是启动日志和事件日志就不行。
- 适用于支持宽表,不用join的方式。即,只能运算单表;不能多表操作;
- 适用于可以总结出基础的统计指标,用一个字段表示。意思是: 会将多条数据进行预计算。
- 适用于实时性高的场景。
- 适用于对数据质量的敏 感度不高的场景。预计算就是精确度不高。
缺点:
- 是快, 但是舍弃了精度。
- 不能多表join。只能单表
是一个实时处理时序数据的olap数据库。因为它的索引首先按照时间分片,查询的时候也是按照时间线去路由索引。
框架原理
数据结构
与druid架构相辅相成的是其基于datasource和segment的数据结构。才有了druid的高性能。
druid的datasource相当于关系型数据库中的表。
datasource的结构包括:
- 时间列:表明每行数据的时间值,默认utc,精确到毫秒级
- 维度列:维度来自于olap的概念, 标识数据航的各类信息
- 指标列:用于聚合和计算的列。通常是一些数字,计算操作通常是count,sum等。
维度列,指标列是统称, 包含了多个列。
比如:publisher, advertise,gender 都是维度列
click, price都是指标列 。
druid在数据存储时便可以对数据进行聚合操作。
datasource是一个逻辑概念。segment才是数据的实际物理存储格式。
将不同时间范围内的数据存储在不同的segment数据块中,这就是数据横向切割。按时间横向切割,避免了权标查询,极大提高效率。
segment中,也采用发了面向列进行数据压缩存储,bitmap压缩。这就是所谓的数据纵向切割。
横轴按照时间切, 纵轴按照列切。
roll up 聚合
可扩展
drui安装
安装方式分为使用官方安装包,也可以通过第三方imply安装。
下面记录的是使用imply安装。
(1)解压压缩包;
(2)修改zk配置:
vi con/druid/_common/common.runtime.properties
druid.zk.service.host=172.33.21.40:9092
(3) 修改quickstart.conf
vi conf/supervise/quickstart.conf
:verify bin/verify-java
#:verify bin/verify-default-ports
#:verify bin/verify-version-check
:kill-timeout 10
#!p10 zk bin/run-zk conf-quickstart
(4) 启动zk
(5) 启动imply
bin/supervise -c conf/supervise/quickstart.conf
(6) 访问172.33.21.40:9095