OLAP(Online Analytical Processing)
联机分析处理OLAP,它具有FASMI(Fast Analysisof Shared Multidimensional Information),即共享多维信息的快速分析的特征。
OLAP委员会对联机分析处理的定义:使分析人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业维特性的信息进行快速、一致、交互的存取,从而获得对数据更深入了解的一类软件技术
OLAP引擎分类
OLAP特点:
1. 假定性:需要初始的假设来给出导航数据分析的方向,最终用分析的结果来验证初始的假设。
2. 快速性:用户对OLAP的快速反映能力有很高的要求。
3. 可分析性:能处理与应用有关的任何逻辑分析和统计分析。用户可以在OLAP平台上进行分析,也可以连接到其他外部分析工具上。
4. 多维性:是OLAP的关键属性,系统提供对数据分析的多维视图和分析,如对层次维和多重层次维完全支持。
5. 信息性:系统能及时获取信息,并能管理大容量的信息。
OLAP分类:
1. 关系OLAP(ROLAP)结构:使用关系或扩充关系DBMS存放并管理数据仓库,采用基于稀疏矩阵表示方法的星形结构或雪花结构存储多维数据,数据检索比MOLAP低效。
代表:SparkSQL/Presto(内存)/Impala + Drill+ Dremel (MPP + 去MR)
- Drill 是Google Dremel的开源实现,分布式mpp(大规模并行处理)查询层,支持SQL和一些NoSQL和Hadoop系统上的语言
- Hive是Facebook专为Hadoop打造的一款数据仓库工具,依托MapReduce的批处理,进行简单的数据查询可能要花费几分到几小时
- Facebook开源Presto,是一个交互式的查询引擎:
完全基于内存的并行计算(直接访问HDFS或其他数据存储层,不需MR,将SQL查询转化为分布式任务,完全内存计算)
流水线
本地化计算
动态编译执行计划
小心使用内存和数据结构
类BlinkDB的近似查询
GC控制
2. 多维OLAP(MOLAP)结构:存储采用矩阵(可能是多维方阵)方式,数据检索高效。
代表:Kylin(空间换时间)/Druid(实时OLAP)和类Druid的2016开始的Pinot
最快的计算方法是不计算
(1)kylin预计算
(2)缓存历史查询结果实现第二次查询的提速,类似Oracle的BGA,把计算结果存储下来,相同的查询请求直接返回。这涉及两个方面:
- 缓存复用:将已有查询直接返回给用户;
- 缓存生命周期:底层数据不断更新,缓存查询的结果可能是过期的。关于缓存,Redis是纯内存的存储,返回速度一般毫秒级。生命周期管理,它提供API二次开发,和ETL调度系统打通(参考唯品会实践)
OLAP常用分析方法
1. 数据切片(Slicing)和数据切块(Dicing)
2. 钻取:数据上钻(Drilling-up)、数据下钻(Drilling-down)、数据上卷(Rolling-up)
3. 数据旋转(Pivoting/Rotating)
- Slicing、Dicing:在多维数据结构按二维进行切片,按三维进行切块,每次都是沿其中一维进行分割称为分片,每次沿多维进行的分片称为分块。
- roll up:在某一维上将低层次的细节数据概括到高层次的汇总数据,或者减少维数
- drill down:从汇总数据深入到细节数据进行观察或增加新维
OLAP评价准则
- 应用速度
- 高并发
- 精确去重
- SQL接口
- 感知hive mata 批处理 大量依赖hive HDFS