大数据Kylin(一):基础概念和Kylin简介
文章目录
基础概念和Kylin简介
一、OLTP与OLAP
1、OLTP
2、OLAP
3、OLTP与OLAP的关系
二、数据分析模型
1、星型模型
2、雪花模型
三、联机数据分析(OLAP)问题
四、什么是Kylin以及Kylin的架构原理
基础概念和Kylin简介
一、OLTP与OLAP
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。
1、OLTP
OLTP(On-Line Transaction Processing):联机事务处理,OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。主要用于业务类系统,主要供基层人员使用,进行一线业务操作。
OLTP表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行、证券等,如美国eBay的业务数据库,就是很典型的OLTP数据库。
2、OLAP
OLAP(On-Line Analytical Processing):联机分析处理,OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。OLAP数据分析的目标是探索并挖掘数据价值,作为企业高层进行决策的参考。
OLAP分析处理是一种共享多维信息的快速分析技术;OLAP利用多维数据库技术使用户从不同角度观察数据;OLAP用于支持复杂的分析操作,侧重于对管理人员的决策支持,可以满足分析人员快速、灵活地进行大数据量的复杂查询的要求,并且以一种直观、易懂的形式呈现查询结果,辅助决策。
事实表和维度表:
事实表:发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。例如,一个按照地区、产品、月份划分的销售量和销售额的事实表如下:
维度表:对事实表中事件的要素的描述信息。维度表包含了维度的每个成员的特定名称。维度成员的名称称为“属性”(Attribute),假设“产品ID”维度表中有3种产品,例如:
OLAP基本概念:
变量(度量):变量是数据度量的指标,是数据的实际意义,描述数据是什么?
例如:人员信息表中的“工资”信息。一般度量列都是可以统计的数值类型列。
维度:描述与业务主题相关的一组属性。例如:“性别”,“时间”等。一个维度往往有多个层次。
例如:时间维度分为年、季度、月和日等层次。地区维度可以包含:国家、地区、省、市、县等。
事实:不同维度在某一取值下的度量。可以理解成维度+度量构成了事实。
OLAP特点:
- 快速性:用户对OLAP的快速反应能力有很高的要求。系统应能在5秒内对用户的大部分分析要求做出反应。
- 可分析性:OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。
- 多维性:多维性是OLAP的关键属性。系统必须提供对数据的多维视图和分析,包括对层次维和多重层次维的完全支持。
- 信息性:不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。
OLAP分类:
按照存储方式分类分为以下几类:
ROLAP (Relational OLAP):ROLAP使用关系数据库存储管理数据仓库,以关系表存储多维数据,有较强的可伸缩性。其中维数据存储在维表中,而事实数据和维ID则存储在事实表中,维表和事实表通过主外键关联。
MOLAP (Multidimension OLAP): MOLAP支持数据的多维视图,采用多维数据组存储数据,它把维映射到多维数组的下标或下标的范围,而事实数据存储在数组单元中,从而实现了多维视图到数组的映射,形成了立方体的结构。
HOLAP(Hybrid OLAP):HOLAP是混合型OLAP, 表示基于混合数据组织的OLAP实现,如低层是关系型的,高层是多维矩阵型的。这种方式具有更好的灵活性。特点是将明细数据保留在关系型数据库的事实表中,但是聚合后数据保存在Cube中,查询效率比ROLAP高,但性能低于MOLAP。
按照处理方式分类:
Server OLAP:绝大多数的OLAP系统都属于此类,Server OLAP在服务端的数据库上建立多维数据立方体,由服务端提供多维分析,并把最终结果呈现给用户。
Client OLAP:所相关立方体数据下载到本地,由本地为用户提供多维分析,从而保证在网络故障时仍然能正常工作。
OLAP基本操作:
钻取(Drill-down):在维的不同层次间的变化,从上层降到下一层,或者说是将汇总数据拆分到更细节的数据,比如通过对第二季度的总销售数据进行钻取来查看第二季度4、5、6每个月的消费数据。
上卷(Roll-up):钻取的逆操作,即从细粒度数据向高层的聚合,如将江苏省、上海市和浙江省的销售数据进行汇总来查看江浙沪地区的销售数据。
切片(Slice):选择维中特定的值进行分析,比如只选择电子产品的销售数据,或者第二季度的数据。
切块(Dice):选择维中特定区间的数据或者某批特定值进行分析,比如选择第一季度到第二季度的销售数据,或者是电子产品和日用品的销售数据。
旋转(Pivot):即维的位置的互换,就像是二维表的行列转换,如图中通过旋转实现产品维和地域维的互换。
3、OLTP与OLAP的关系
从功能角度来看,OLTP负责基本业务的正常运转,而业务数据积累时所产生的价值信息则被OLAP不断呈现,企业高层通过参考这些信息会不断调整经营方针,也会促进基础业务的不断优化,这是OLTP与OLAP最根本的区别。
二、数据分析模型
OLAP分析中,根据事实表和维度表的关系,可以将数据分析模型分为星型模型和雪花模型。在设计数仓时,就应该考虑数据应该按照星型模型还是雪花模型进行组织。
1、星型模型
当所有的维度表都由连接键连接到事实表时,结构图如星星一样,这种分析模型就是星型模型。如下图,星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在下图中,时间维中存在A年1季度1月,A年1季度2月两条记录,那么A年1季度被存储了2次,存在冗余。
2、雪花模型
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其结构图就像雪花连接在一起,这种分析模型就是雪花模型。如下图,雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域,这些被分解的表都连接到主维度表而不是事实表。如下图中,将地域维表又分解为国家,省份,城市等维表。它的优点是:通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能,雪花型结构去除了数据冗余。
星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花型模型要高。星型结构不用考虑很多正规化的因素,设计与实现都比较简单。雪花型模型由于去除了冗余,有些统计就需要通过表的联接才能产生,所以效率不一定有星型模型高。正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的 ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。
三、联机数据分析(OLAP)问题
问题:数据规模决定要选择高效的处理技术
北京电信用户规模超过两千万,每天入库的原始数据超过三百亿条。经过处理后入库的数据是3TB,而集群规模是400TB存储;每天执行的任务超过800个,其中大概有 600-700 个是属于临时产生的任务(查询情况多变,比如开发或者测试人员进行数据测试,或者临时统计某些需求生成报表等),且要求响应速度快,所以集群很繁忙。如果不选择高效的数据处理技术,将无法满足分析需求。如下图所示:
问题:数据查询需求的困境
分析人员、优化人员对数据的临时性查询越来越多,探索性数据需求越来越旺盛,需要找到一个方法来满足这类需求。首先,可以寻求固定化报表方式解决,可以做很多报表放在 MySQL 里供查询。但这样做非常不灵活,开发周期缓慢,而且经常出现需求变更和需求不明确的情况,所以报表只适用于固定化场景的情况。
使用 Hive 、 Spark Sql、impala 可以满足探索性数据分析的需求,但 Hive 速度较慢,Spark Sql 对内存资源要求很高,多并发下出现资源瓶颈问题,并且SparkSQL的代码维护成本相对高,impala基于内存计算,内存消耗严重。如果应用的场景是数据来源固定,但是查询不固定且要求速度时,就需要寻求新的技术解决。
总结以上两大问题,目前OLAP(On-Line Analytical Processing)联机分析处理的特点是:
- 数据量大并且要求查询速度快时,计算时间成本高。
- OLAP数据分析使用SparkSQL速度快,但内存需求大,代码维护成本高,impala消耗内存大,采用固定化报表方式无法应对查询需求不定、多样的分析需求。
四、什么是Kylin以及Kylin的架构原理
Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的表。Apache Kylin令使用者仅需三步,即可实现超大数据集上的亚秒级查询:
- 定义数据集上的一个星形或雪花形模型
- 在定义的数据表上构建cube
- 使用标准SQL通过ODBC、JDBC或RESTFUL API进行查询,仅需亚秒级响应时间即可获得查询结果。
Kylin数据处理原理及架构原理:
kylin的核心思想是预计算,kylin对多维分析可能用到的度量进行预计算,将高维复杂的聚合计算,多表连接等操作转换成预计算结果,将计算好的结果保存成cube,存储于Hbase中,供查询时直接访问。预计算过程需要很长时间,但是一旦结果计算出来,再次查询只是获取结果集合的过程,不需要额外再次浪费集群资源进行长时间查询,这种以空间换取时间的处理数据模式决定了Kylin拥有很好的快速查询、高并发能力。
Kylin是一个MOLAP(多维联机数据分析)系统,最常用的是将Hive中的数据进行预计算,利用Hadoop的Mapreduce或者Spark分布式计算框架来实现。Kylin获取的数据表是星型数据结构的,目前建模时,只支持一张事实表,多张维度表,假设业务需求比较复杂,可以考虑在Hive中进行预处理生成一张宽表来处理。
对于Hive中的维度表和事实表,根据我们指定的维度列来构建cube,cube是所有维度的组合,任一维度的组合称为cuboid,即:cube中包含所有的cuboid。理论上来说,一个N维的cube,会有2的N次方种维度组合(cuboid)。举例:假设一个cube包含time、country、city、location四个维度,那么就有16中cuboid组合。通过计算框架的计算将OLAP分析的cube数据存储在Hbase中,方便后期实现多维数据集的交互式快速查询。
上图中是Kylin整体架构原理图,其中:
REST Server:提供Restful接口,可以通过此接口来创建、构建、刷新、合并Cube等相关操作。同时也可以通过Restful接口实现SQL查询。
Query Engine:目前Kylin使用开源的Calcite框架来实现SQL解析,用户发出SQL查询之后,可以通过Query Engine来将SQL Query语句转换成SQL语法树,也就是逻辑计划。
Routing:负责将解析SQL生成的执行计划转换成cube缓存的查询,cube是通过预计算缓存在Hbase中,这部分查询时可以在秒级甚至是毫秒级完成,除此之外,还有一些操作需要使用原始数据(存储在HDFS上)通过Hive查询,这部分查询的延迟比较高。
Metadata:Kylin中有大量的元数据信息,包括cube的定义、星型模型的定义、job和执行job的输出信息、模型的维度信息等等。Kylin的元数据存储在Hbase中,存储的格式是Json字符串。
Cube Build Engine:立方体构建模块是所有模块的基础,主要负责Kylin预计算中创建cube,创建的过程是首先通过Hive读取原始数据,然后通过MR或者Spark计算生成Htable,最后将数据加载到Hbase表中。
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关文章:

大数据Kylin(一):基础概念和Kylin简介
文章目录 基础概念和Kylin简介 一、OLTP与OLAP 1、OLTP 2、OLAP 3、OLTP与OLAP的关系 二、数据分析模型 1、星型模型 2、雪花模型 …...

推进行业生态发展完善,中国信通院第八批RPA评测工作正式启动
随着人工智能、云计算、大数据等新兴数字技术的高速发展,数字劳动力应用实践步伐加快,以数字生产力、数字创造力为基础的数字经济占比逐年上升。近年来,机器人流程自动化(Robotic Process Automation,RPA)成…...

DOM编程-获取下拉列表选中项的value
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>获取下拉列表选中项的value</title> </head> <body> <script type"text/javascript"> …...

认证服务-----技术点及亮点
大技术Nacos做注册中心把新建的微服务注册到Nacos上去两个步骤 在配置文件中配置应用名称、nacos的发现注册ip地址,端口号在启动类上用EnableDiscoveryClient注解开启注册功能使用Redis存验证码信息加入依赖配置地址和端口号即可直接注入StringRedisTemplate模板类用…...

6个常见的 PHP 安全性攻击
了解常见的PHP应用程序安全威胁,可以确保你的PHP应用程序不受攻击。因此,本文将列出 6个常见的 PHP 安全性攻击,欢迎大家来阅读和学习。 1、SQL注入 SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执…...

三大基础排序算法——冒泡排序、选择排序、插入排序
目录前言一、排序简介二、冒泡排序三、选择排序四、插入排序五、对比References前言 在此之前,我们已经介绍了十大排序算法中的:归并排序、快速排序、堆排序(还不知道的小伙伴们可以参考我的 「数据结构与算法」 专栏)࿰…...

负载均衡上传webshell+apache换行解析漏洞
目录一、负载均衡反向代理下的webshell上传1、nginx负载均衡2、负载均衡下webshell上传的四大难点难点一:需要在每一台节点的相同位置上传相同内容的webshell难点二:无法预测下一次请求是哪一台机器去执行难点三:当我们需要上传一些工具时&am…...

【ESP 保姆级教程】玩转emqx数据集成篇③ ——消息重发布
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-10 ❤️❤️ 本篇更新记录 2023-02-10 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

支持分布式部署的主流方式 - Session 持久化到 Redis
1.为什么要将 Session 存储在 Redis 中如果我们不将 Session 存储在 MySQL 或者 Redis 中, 那么做出来的项目就只能支持单机部署, 不支持分布式部署. 因为之前我们只是将 Session 存储在当前电脑的内存里面. 当张三去登录的时候, 将 Session 信息存储在 A 服务器, 这个时候负载…...

计算机网络|第二章 物理层|湖科大课程|从零开始的计网学习——物理层(计网入门就看这篇!)
图片来源于胡科大计算机网络课程,https://www.bilibili.com/video/BV1c4411d7jb?p20&vd_sourcedeb12d86dce7e419744a73045bc66364。文章非盈利商业用途,供博主与大家学习参考,如有侵权,请联系我删除!2.1物理层的基…...

【微服务】RabbitMQSpringAMQP消息队列
🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.初识MQ (1) 引入 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,可以立即得到响应,但是你却不能跟多个人同时通话。 异…...

jenkins +docker+python接口自动化之docker下安装jenkins(一)
jenkins dockerpython接口自动化之docker下安装jenkins(一) 目录:导读 1、下载jenkins 2、启动jenkins 3、访问jenkins 4.浏览器直接访问http://ip/:8080 5.然后粘贴到输入框中,之后新手入门中先安装默认的插件即可,完成后出…...

SpringBoot——Banner介绍
一、什么是BannerBanner即横幅标语,我们在启动SpringBoot项目时会将Banner信息打印至控制台。我们可以输出一些图形、SpringBoot版本信息等内容。默认情况下是通过实现类SpringBootBanner输出的Banner内容,默认的输出内容如下。二、自定义Banner如果不想…...

【STL】综述
STL,一文即可知 文章目录一、STL基本知识概述容器二、序列式容器详述数组容器array向量容器vector双端队列容器deque链式容器list正向链容器forward_list二、关联式容器详述红黑树RB-Tree哈希表参考博客😊点此到文末惊喜↩︎ 一、STL基本知识 概述 STL…...

C++中编译的静态库与动态库
1.什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载…...

JS对象到原始值的转换
JS对象到原始值转换的复杂性 主要由于某些对象类型存在不止一种原始值的表示 对象到原始值转换的三种基本算法 在解释三种算法前需要了解toString valueOf这两个方法 toString 返回对象的字符串表示Array类的toString方法会将每个元素转换为字符串,再使用逗号作为…...

深度复盘-重启 etcd 引发的异常
作者信息: 唐聪、王超凡,腾讯云原生产品中心技术专家,负责腾讯云大规模 TKE 集群和 etcd 控制面稳定性、性能和成本优化工作。 王子勇,腾讯云专家级工程师, 腾讯云计算产品技术服务专家团队负责人。 概况 作为当前中国…...

2023年春招热点面试题(一)------新特性
文章目录一、Spring 6.0 新特性二、Spring Boot 3.0 新特性三、JDK 系列 新特性A.**JDK8新特性(2014年初)(LTS版本)**B. **JDK9新特性(2017年9月)**C.**JDK10新特性(2018年3月)**D.*…...

工程项目管理系统源码+spring cloud 系统管理+java 系统设置+二次开发
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...

想要精通算法和SQL的成长之路 - 接雨水
想要精通算法和SQL的成长之路 - 接雨水前言一. 接雨水前言 想要精通算法和SQL的成长之路 - 系列导航 一. 接雨水 原题链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height [0,…...

Vue3 更高效的构建工具——Vite
文章目录前言一、Vite简介1. Vite组成2.为什么选 Vite?二、Vite的优缺点vite优点vite缺点三、使用Vite创建Vue3项目1. 创建 vite 的项目2.项目的结构前言 本文讲解了构建工具 Vite,目前只有vue3才可以使用Vite,如果本文对你有所帮助请三连支持博主。 下…...

优思学院|從《狂飙》高启强爱看的《孙子兵法》到六西格玛项目管理
近期最受人瞩目的,无疑是电视剧《狂飙》中出类拔萃的反派高启强。而在剧中,指引高启强走向顶峰的,正是那部著名的军事经典——《孙子兵法》。 在剧中,高启强在一次村庄改造项目上遇到了困难,但他仍保持冷静࿰…...
如何利用状态机编程实现启保停控制(含Stateflow模型介绍)
状态机的介绍这里不再赘述,概念也很简单没有过多的复杂理论。下面我们直接给出具体实现过程。有限自动状态机详细讲解请参看下面的文章链接: PLC面向对象编程系列之有限状态机(FSM)详解_RXXW_Dor的博客-CSDN博客_有限状态机 plc实现编写PLC控制机器动作类程序时,当分支比较…...

4. sql 语句中常用命令
1. 数据表: 本文中所有命令,测试的数据表结构如下图: 2. 查询语句: 2.1 基础查询:select //查询单个字段: select 字段名 from 表名; //查询多个字段 select 字段名1,字段名2,... from 表名; //查询所…...

第三章 Opencv图像像素操作
目录1.像素1-1.确定像素位置1-2.获取指定像素的像素值1-3.修改像素的BGR值2.用numpy模块操作像素2-1.创建图像1.创建黑白图像2.创建彩色图像3.创建随机图像2-2.拼接图像1.水平拼接hstack()方法2.垂直拼接vstack()方法1.像素 1.像素是构成数字图像的最小单位。每一幅图像都是由M…...

SpringBoot集成swagger3(CD2207)(内含教学视频+源代码)
SpringBoot集成swagger3(CD2207)(内含教学视频源代码) 教学视频源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87435564 目录SpringBoot集成swagger3(CD2207)&#…...

Go语言语言学习十三(反射的对象值)
在Go语言中反射不仅可以获取值的类型和种类,还可以获取值和更改值,使用reflect.ValueOf()获取和设置变量的值。 使用反射值包装任意值 Go语言通过reflect.ValueOf()获取的是值的反射值对象,书写格式如下 value : reflect.ValueOf(rawValue…...

【ESP 保姆级教程】玩转emqx数据集成篇② ——控制台输出动作(多用于测试环境调试功能)
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-10 ❤️❤️ 本篇更新记录 2023-02-10 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

MyBatis案例 | 使用映射配置文件实现CRUD操作——添加数据
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…...

2023年,什么样的CRM,才是您最需要的?
春节假期刚刚结束,当大家还沉浸在新春佳节的喜悦中时,很多地方已经争先恐后地奋力开跑了。近日,全国各地方政府相继出台并发布了2023年数字化转型规划,纷纷结合自身的区位特色和优势资源,明确2023年乃至此后数年的数字…...