kylin

前言

OLAP和OLTP

数据处理大致可以分成两大类:
联机分析处理OLAP(On-Line Analytical Processing)
联机事务处理OLTP(On-Line Transaction Processing)

OLTP是传统的关系数据库的主要应用,主要用于基本的、日常的事务处理。例如银行交易
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果

OLAP(On-Line Analytical Processing)在线分析处理是一种共享多维信息的快速分析技术;
OLAP利用多维数据库技术使用户从不同角度观察数据
OLAP用于支持复杂的分析操作,侧重与对管理人员的决策支持,可以满足分析人员的快速、灵活地进行大数据复量的复杂查询的要求、并且以一种直观易懂的形式呈现查询结果,辅助决策

基本概念

度量:数据度量的指标,数据的实际含义(最终要统计的结果值,measure)
维度:描述与业务主题相关的一组属性,(条件)
事实:不同维度在某一取值下的度量(事实表:维度+度量)

OLAP特点

  • 快速性:用户对OLAP的快速反应能力有很高的要求。系统应能在5秒内对用户的大部分分析要求做出反应。
  • 可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。
  • 多维性:多维性是OLAP的关键属性。系统必须提供对数据的多维视图和分析,包括对层次维和多重层次维的完全支持。
  • 信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。

OLAP分类
1.按存储方式分类(https://blog.csdn.net/liu251/article/details/40785291)

  • ROLAP
    ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了"星型模式"。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为"雪花模式"。特点是将细节数据保留在关系型数据库的事实表中,聚合后的数据也保存在关系型的数据库中。这种方式查询效率最低,不推荐使用。
  • MOLAP
    表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成"立方块(Cube)“的结构,在MOLAP中对"立方块"的"旋转”、“切块”、"切片"是产生多维数据报表的主要技术。特点是将细节数据和聚合后的数据均保存在cube中,所以以空间换效率,查询时效率高,但生成cube时需要大量的时间和空间。
  • HOLAP
    表示基于混合数据组织的OLAP实现(Hybrid OLAP)。如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。特点是将细节数据保留在关系型数据库的事实表中,但是聚合后的数据保存在cube中,聚合时需要比ROLAP更多的时间,查询效率比ROLAP高,但低于MOLAP。

2.按处理方式分类(https://blog.csdn.net/dufufd/article/details/78621158)

  • Server OLAP
    数据在服务器端的多维分析
  • Client OLAP
    把部分数据下载到本地,为用户提供本地的多维分析

OLAP基本操作
kylin_第1张图片

  • Drill-down:钻取,在维的不同层次间的变化,从上层降到下一层,或者说将汇总数据拆分成更细节的数据。比如第二季度的数据拆分成4、5、6月
  • Roll-up:上卷,钻取的逆操作,从下层升到上一层,将更细粒度的数据向高层次进行聚合。比如将一年12个月的数据聚合成四个季度的数据
  • Slice:切片,获取数据某一个维上特定值的数据,比如在时间维上,有十二个月,取4月的数据
  • Dice:切快,获取数据在某一个维上多个值的数据,比如在时间维上,取3,4,5月的数据,这些数据就是一个快
  • Pivot:旋转,维的位置的转换,就像二维表中行列的转换

OLTP:On-Line Transaction Processing,联机事务处理,表示事务性非常高的系统,一般都是高可用的在线系统。以小的事物和小的查询为主,评测其系统时,一般看每秒执行的Transaction和Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个、几千个。select语句的执行量每秒几千甚至几万个。典型的OLAP系统有电子上午系统、银行、证券等。


Kylin简介

Apache kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口以及多维分析(OLAP)以支持超大规模数据。它能在亚秒内查询巨大的Hive表。最初由eBay Inc. 开发并贡献至开源社区。

  • 可扩展超快OLAP引擎
    是为解除在Hadoop/Spark上百亿规模数据的查询延迟而设计
  • Hadoop ANSI SQL接口
    kylin为Hadoop提供SQL支持大部分查询功能
  • 交互式查询能力
    通过kylin,用户可以和Hadoop在亚秒级内进行交互,在同样的数据集上,提供比Hive更好的性能
  • 多维立方体(MOLAP Cube)
    用户可以在kylin内为百亿以上的数据集定义数据模型,并构建立方体
  • 与BI无缝结合(BI:商业智能)
    kylin提供和BI工具的整合能力,如Tableau,PowerBL/Excel,MSTR,QlikSense,Hue和superSet
  • Job的管理和监控
  • 解码和压缩
  • 增量更新
  • 利用HBase Coprocessor
    Coprocessor:协处理器
  • 基于HyperLogLog的Dinstinc Count近似算法
  • 友好的WEB-UI界面,以管理、监控和使用立方体
  • 项目及表级别的访问控制安全
  • 支持LDAP、SSO

kylin架构
kylin_第2张图片
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具有良好的快速查询和高并发能力

名词解释

  • 事实表
    用来记录具体事件的,包含每个事件的具体要素以及具体发生的事情(发生的条件以及事件结果)
  • 对事实表中具体要素的描述信息(条件表)
  • 维度
    观察数据的角度,查询条件
  • 度量
    被聚合的统计值,在对应查询条件下的查询结果
  • cuboid
    维度的任意组合,即多条查询条件结果的组合,比如年龄18的学生的查询结果和年龄18,性别男的查询结果的组和
  • cube
    所有维度的组和,包括所有的cuboid

多维数据分析模型

星型模型:(百度百科:https://baike.baidu.com/item/星型模型/9133897?fr=aladdin)
星形模式是多维的数据关系,它由事实表(Fact Table)和维表(Dimension Table)组成。每个维表中都会有一个维作为主键,所有这些维的主键结合成事实表的主键。事实表的非主键属性称为事实,它们一般都是数值或其他可以进行计算的数据。

星形模式是一种多维的数据关系,它由一个事实表(Fact Table)和一组维表(Dimension Table)组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。事实表的非主键属性称为事实(Fact),它们一般都是数值或其他可以进行计算的数据;而维度都是文字、时间等类型的数据,按这种方式组织好数据我们就可以按照不同的维(事实表主键的部分或全部)来对这些事实数据进行求和(summary)、求平均(average)、计数(count)、百分比(percent)的聚集计算,甚至可以做20~80分析。这样就可以从不同的角度数字来分析业务主题的情况。
kylin_第3张图片
雪花模型:(百度百科: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种组合。
kylin_第4张图片
cube构建流程:
kylin_第5张图片

  1. 构建一个中间平表(Hive table),将Model中fact表和look up表构建成一个大的Flat Hive Table
  2. 重新分配Flat Hive Table
  3. 从事实表中抽取维度的Distinct(不同)值
  4. 对所有的维度表进行压缩编码,生成维度字典
  5. 计算和统计所有的维度组和,并保存。其中,每一种维度组合成为一个Cuboid
  6. 创建HTable
  7. 构建最基础的Cuboid数据
  8. 利用算法构建N维到0维的Cuboid数据
  9. 构建Cube
  10. 将Cuboid数据转换成HFIle
  11. 将HFile直接加载到HBase Table中
  12. 更新Cube数据
  13. 清理Hive

kylin搭建
kylin_第6张图片
1.最底层是数据来源层,可以通过Sqoop等工具将数据加载到hdfs等分布式文件系统中
2.kylin依赖hadoop平台,包括hbase、hive、mapreduce等。即kylin运行在hadoop的大数据平台上

kylin的部署有两种方式

1.单实例部署
在hadoop集群的一个节点上部署,然后启动。
部署特点:简单快捷,但处理并发请求比较多,单台会形成瓶颈
2.集群部署
集群模式只需要增加kylin的节点数,因为kylin的元数据是存储在hbase中的,只需要在kylin中配置,可以访问到相同一份元数据即可(kylin.metadata.url相同),并且集群中只有一个可运行的任务引擎,其他都是查询引擎
集群模式还可以使用LB(nginx),实现访问请求的负载均衡

你可能感兴趣的:(大数据,kylin)