(1)druid的一些开始

druid是分布式的实时的数据分析系统,一定意义上是数据库
druid在快速查询,水平扩展,实时数据摄入和实时分析等方面有良好的支持。
整个数据分析的基础架构通常分为以下几类:
1)使用hadoop/spark的MR分析
2)将hadoop/spark的结果注入到RDBMS中提供实时分析
3)将结果注入到NoSQL中,例如hbase
4)将数据源进行流式处理,对接流式计算框架,如storm,结果注入到RDBNS/NoSQL中
5)将数据源进行流式处理,对接分析数据库,例如Druid中

Druid设计的三个原则:
1)快速查询 : 部分数据的聚合 + 内存化  + 索引
2)水平扩展能力 : 分布式数据 + 并行化查询
3)实时分析;  不可变的过去,只追加的未来

Druid的基本概念:
1 数据格式:
Druid在数据摄入之前,首先需要定义一个数据源(DataSource),这个DataSource有些类似数据库中表的概念。每个数据集包括三个部分: 时间列 (TimeStamp),维度列 (Dimension)  指标列 (Metric)
每个数据集都必须有时间列 ,Druid会将时间很近的一些数据行聚合在一起,所有的查询都要指定查询的时间范围。
维度列主要用于过滤或者分片数据。维度列的字段为字符串类型
指标列是用于聚合和计算的列,通常是数值类型,计算操作通常包括Count  Sum  Mean


2 数据摄入
可以接受实时摄入也有批处理数据的摄入
3 数据查询
Druid原生支持json格式,通过http传送,Druid不支持标准的SQL语言查询。目前在支持完善中。Druid舍去了OLAP查询中比较复杂的操作,例如JOIN,相比传统的数据库,Druid是一种时序数据库,按照一定的时间粒度对数据进行聚合,以加快分析查询。

Druid相对其他的组件的优势:
Druid的核心是通过数据预先聚合提高查询性能(而且是实时聚合),针对预先定义好的schema,spark可以对任何schema进行灵活操作。
Kylin是在hive表上做了一层缓存,通过预先计算和定期任务,把很多数据实现存储在hbase为基础的OLAP Cube中,大部分数据可以访问Hbase获取结果,而不需要访问hive原始数据。而且kylin缺少实时摄入数据的能力。
ES提供了实时数据摄入的功能,但是性能比Druid要慢很多,因为它的索引过程更加复杂。另外ES是schema-free的,也就是说无须定义schema,就可以直接插入Json数据,进行索引,druid需要定义清楚维度和指标列
还有一个很大的区别:ES会保持元素的文档数据,而Druid在按照时间粒度聚合数据后,原始数据将会丢弃,无法召回具体的某一行数据。大数据规模不大的情况下,ES也是非常不错的选择,Druid更善于处理更大规模,实时性更强的数据。
相比Druid,Impala需要将数据格式转换成Parquet格式才能进行查询,有时数据转换也会花费不少时间。


概念:
数据分析的整个流程如下:
ETL ——》 数据仓库 ——》 OLAP(联机分析处理)——》数据挖掘     
OLAP是分析过去的数据,是数据分析的范畴,这也是Druid发力的地方
数据挖掘是预测未来的情况,是数据科学的范畴,这是ML的范围。





猜你喜欢

转载自blog.csdn.net/yyqq188/article/details/79408594
今日推荐