前言
OLAP和OLTP
数据处理大致可以分成两大类:
联机分析处理OLAP(On-Line Analytical Processing)
联机事务处理OLTP(On-Line Transaction Processing)
OLTP是传统的关系数据库的主要应用,主要用于基本的、日常的事务处理。例如银行交易
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果
OLAP(On-Line Analytical Processing)在线分析处理是一种共享多维信息的快速分析技术;
OLAP利用多维数据库技术使用户从不同角度观察数据
OLAP用于支持复杂的分析操作,侧重与对管理人员的决策支持,可以满足分析人员的快速、灵活地进行大数据复量的复杂查询的要求、并且以一种直观易懂的形式呈现查询结果,辅助决策
基本概念
度量:数据度量的指标,数据的实际含义(最终要统计的结果值,measure)
维度:描述与业务主题相关的一组属性,(条件)
事实:不同维度在某一取值下的度量(事实表:维度+度量)
OLAP特点
OLAP分类
1.按存储方式分类(https://blog.csdn.net/liu251/article/details/40785291)
2.按处理方式分类(https://blog.csdn.net/dufufd/article/details/78621158)
OLTP:On-Line Transaction Processing,联机事务处理,表示事务性非常高的系统,一般都是高可用的在线系统。以小的事物和小的查询为主,评测其系统时,一般看每秒执行的Transaction和Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个、几千个。select语句的执行量每秒几千甚至几万个。典型的OLAP系统有电子上午系统、银行、证券等。
Kylin简介
Apache kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口以及多维分析(OLAP)以支持超大规模数据。它能在亚秒内查询巨大的Hive表。最初由eBay Inc. 开发并贡献至开源社区。
kylin架构
Hadoop/Hive:kylin是一个MOLAP系统,将Hive中的数据进行预处理,利用MR或者Spark进行实现
HBase:kylin用来存储OLAP分析结果cube数据的地方,实现多维数据集的交互式查询
rest server:提供restful 接口
query engine:使用开源的calcite框架实现sql的解析,是Sql引擎层
routing:路由层,负责将解析生成的执行计划转成cube缓存的查询
metadata:kylin大部分元数据信息的存储
Cube Build Engine:负责kylin预计算中创建Cube
kylin工作原理
Apache kylin的工作原理本质上是MOLAP(Multidimensional On-Line Analytical Processing) Cube,也就是多维立方体在线分析计算
kylin的核心思想是预计算,即对多维分析可能用到的度量(即条件)进行预计算,把计算好的结果保存成cube,并存储到HBase中。共查询时直接使用。把高复杂的聚合计算和多表联合等操作转换成预计算结果的查询。这决定了kylin具有良好的快速查询和高并发能力
名词解释
多维数据分析模型
星型模型:(百度百科:https://baike.baidu.com/item/星型模型/9133897?fr=aladdin)
星形模式是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。
星形模式是一种多维的数据关系,它由一个事实表(Fact Table)和一组维表(Dimension Table)组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。事实表的非主键属性称为事实(Fact),它们一般都是数值或其他可以进行计算的数据;而维度都是文字、时间等类型的数据,按这种方式组织好数据我们就可以按照不同的维(事实表主键的部分或全部)来对这些事实数据进行求和(summary)、求平均(average)、计数(count)、百分比(percent)的聚集计算,甚至可以做20~80分析。这样就可以从不同的角度数字来分析业务主题的情况。
雪花模型:(百度百科:https://baike.baidu.com/item/雪花模型/3139991)
雪花模型是当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。
相比星型模型,雪花模型的特点是贴近业务,数据冗余较少,但由于表连接的增加,导致了效率相对星型模型来的要低一些。
电商维度模型建立实例
假定有一个电商的销售数据集,其中维度包括时间(Time)、商品(Item)、地点(Location)和供应商(Supplier),度量为销售额(GMV)。那么所有维度的组合就有2 4 =16种,比如一维度(1D)的组合[Time]、[Item]、[Location]、[Supplier]4种;二维度(2D)的组合有[Time,Item]、[Time,Location]、[Time、Supplier]、[Item,Location]、[Item,Supplier]、[Location,Supplier]6种;三维度(3D)的组合也有4种;最后零维度(0D)和四维度(4D)的组合各有1种,总共就有16种组合。
cube构建流程:
kylin搭建
1.最底层是数据来源层,可以通过Sqoop等工具将数据加载到hdfs等分布式文件系统中
2.kylin依赖hadoop平台,包括hbase、hive、mapreduce等。即kylin运行在hadoop的大数据平台上
kylin的部署有两种方式
1.单实例部署
在hadoop集群的一个节点上部署,然后启动。
部署特点:简单快捷,但处理并发请求比较多,单台会形成瓶颈
2.集群部署
集群模式只需要增加kylin的节点数,因为kylin的元数据是存储在hbase中的,只需要在kylin中配置,可以访问到相同一份元数据即可(kylin.metadata.url相同),并且集群中只有一个可运行的任务引擎,其他都是查询引擎
集群模式还可以使用LB(nginx),实现访问请求的负载均衡