大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(已更完)

ClickHouse(已更完)

Kudu(已更完)

Druid(已更完)

Kylin(正在更新…)

章节内容

上节我们完成了如下的内容:


Apache Druid 和 Kafka 结合

Druid 导入数据流程

查询案例 SQL

4d75de658b168b6d21fc85fd52cf4dd8_aef33ee68d4e48698b5fd24af405e5c4.png 背景历史

Apache Kylin,一种MOLAP的数据分析引擎。最早脱胎于eBay中国研发中心,并贡献给Apache基金会,目前ApacheKylin的核心开发团队已经自立门户,创建了Kyligence(Kylin Intelligence)公司。值得一提的是,Apache Kylin是第一个由中国人主导的Apache顶级项目。


发展历程

2014年Kylin诞生,支持Hive批数据源,从海量历史数据挖掘价值

2015年V1.5 首先支持Kafka数据源,采用单机微批次处理构建

2016年V1.6发布实时(NRT Streaming),使用Hadoop微批次消费流数据

2017年V2.0支持雪花模型和Spark引擎

eBay团队开始尝试 real-time

2018年V2.4支持Kafka流数据与Hive维度表JOIN

eBay开源real-time OLAP 实现

2019年Q1,经过社区Review和完善,合并Master

2019年Q4,V3.0发布Real-time OLAP,实现秒级数据准备延迟

Kylin提供多维数据分析(MOLAP)的秒级响应,目前国内很多公司都在使用。

685ca30ae6754a8ed5167bc9090e6f89_683b514915444f7c8d7cd715e5bef804.png 项目特点

数据源和模型:主要支持Hive、Kafka

构建引擎:早起支持MapReduce计算引擎,新版本支持Spark、Flink计算引擎。除了全量构建外,对基于时间的分区特性,支持增量构建。

存储引擎:构建好的Cube以Key-Value的形式存储在HBase中,通过优化RowKey加速查询。每一种维度的排列组合计算结果被保存为一个物化视图,叫Cuboid

优化算法:Cube本身就是用空间换时间,也会根据算法,剪枝优化掉一些多余的Cubeid,寻求平衡

访问接口:支持标准SQL查询,可以对接Zeppelin、Tableau等BI工具,SQL通过查询引擎,可以被路由到对应的Cuboid上。

应用场景

特点:Kylin在亚秒内返回海量数据的查询结果


Kylin的典型应用场景如下:


巨大的数据量,单个数据源表千亿级别,且单个数据源达到百TB级别

巨大的查询压力(查询的高并发)

查询的快速响应

下游较灵活的查询方式,需支持带有复杂条件的SQL查询

Kylin的核心思想是预计算,将数据按照指定的维度和指标,预先计算出所有可能的查询结果,利用空间换时间来加速模式固定的OLAP查询。


基本术语

数据仓库

数据仓库是一种信息系统的资料存储理论,强调的是利用某些特性的资料存储方式,让所包含的资料特别有利于分析和处理,从而产生有价值的咨询,并可依此做出决策。

利用数据仓库的方式存放的资料,具有一旦存入,便不会随时发生变动的特性,此外,存入的资料必包含时间属性,通过一个数据仓库中含有大量的历史性资料,并且它可以利用特定的分析方式,从其中发掘出特定的资讯。

94283677782068543c46878629ab2e02_4338205a6b47465080a843fcd73cddc0.png OLTP

联机事务处理,传统的关系型数据库的应用。


OLAP分类

OLAP(Online Analytical Process),联机分析处理,以多维度的方式分析数据,它是呈现集成性决策信息的方法,多用于数据仓库或商务智能。其主要功能在于方便大规模数据分析及统计计算,可对决策提供参考和支持。与之相区别的是联机交易处理(OLTP),联机交易处理,侧重与基本的、日常的事务处理,主要是事务的增删改查。


OLAP的概念,在实际应用中存在广义和狭义两种不同的理解方式。广义上理解与字面上的意思相同,泛指一切不会对数据进行更新的分析处理。但更多的情况下OLAP被理解为其狭义上含义,即与多维分析相关,基于立方体(Cube)计算而进行的分析。


OLAP有多种实现方法,根据存储数据的方式不同可以分为:


ROLAP(Relational OLAP),细节数据,聚合后的数据都保存在类关系型数据库中,Hive、SparkSQL属于ROLAP。

MOLAP(Multidimensional OLAP),事先将汇总数据计算好,存放在自己特定的多维数据库中,用户的OLAP操作可以直接映射到多维数据库的访问,不通过SQL访问吗,其实本质上是空间换时间。Kylin的本质是MOLAP

HOLAP(Hybrid OLAP),表示基于混合数据组织的OLAP实现(Hybrid OLAP),如低层是关系型的,高层是多维矩阵型的,这种方式具有更好的灵活性。

事实表和维度表

事实表(Fact Table)是指存储有事实记录的表,如系统日志、销售记录、传感器数值等,事实表的记录是动态增长的,所以它的体积通常远大于维度表。


维度表(Dimension Table)或维度表,也称为查找表(LookUp Table),是与事实表相应的一种表,它保存了维度的属性值,可以跟事实表做关联。相当于事实表上经常重复的属性抽取、规范出来用一张表进行管理。


常见的维度表:日期表(存储日期对应的年月日、季度等)、地区表(国家、省、城市等)。维度表的变化通常不会太大。

维度表可以带来如下的好处:


缩小了事实表的大小

便于维度的管理和维护,增加、删除、修改维度的属性,不必对事实表的大量记录进行改动

维度表可以多个事实表重用

维度和度量

userid,2020-10-01 09:00:00, produceid,shopid,orderid,299

维度是指审视数据的角度,它通常是数据记录的一个属性,例如:时间、地点等

度量就是被聚合的统计值,也就是聚合运算的结果,通常是一个数值,如总销售额、不同的用户数等。


分析人员往往要结合干个维度来审查度量值,以便在其中找到变化规律。在一个SQL查询中。GROUP BY的属性通常就是维度,而所计算的值则是度量。

SELECT 
  part_dt, 
  lstg_site_id, 
  sum(price) as total_selled, 
  count(DISTINCT seller_id) as sellers
FROM
  kylin_sales
GROUP BY part_dt, lstg_site_id;

以上查询中,part_dt、lstg_site_id是维度、sum(price)、count(distanct seller_id)是度量。


星型&雪花模型

星型模型(Star Schema)是数据仓库维度建模中常用的数据模型之一。它的特点是一张事实表,以及一到多个维度表,事实表与维度表通过主外键相关联,维度表之间没有关联,就像需要小星型围绕在一颗恒星的周围,所以叫星型模型。

另一种常用的叫雪花模型(SnowFlake Schema),就是将星型模型中的某些维度表抽取成更细粒度的维表,然后让维表之间也进行关联,这种形状酷似雪花,所以叫做雪花模型。


Cube和Cuboid

Cube即多维立方体,也叫数据立方体。

d7a932bc03bbfb85213c02fd27c93642_2da7bef30d1348cc95b19ac202fec616.png 这个由三个维度(维度数超过3个,上图仅为了方便画图表达)构成了一个OLAP立方体,立方体中包含了满足条件的Cell(子立方体)值,这些Cell里面包含了要分析的数据,称之为度量值。


立方体:由维度构建出来的多维空间,包含了所有要分析的基础数据,所有的聚合数据操作都在立方体上进行

维度:观察数据的角度,一般是一组离散的值,对于N个维度来说,所有可能的组合有2的N次方个

度量:即聚合计算的结果,一般是连续的值

Cuboid:特指Kylin中在某一种维度组合下所计算的数据

事实表中的一个字段,要么是维度,要么是度量(可以被聚合)

给定一个数据模型,可以对其上的所有维度进行组合,对于N个维度来说,所有可能的组合有2的N次方个

Cube(或称DataCube),即数据立方体,是一种常用于数据分析于索引技术,它可以对原始数据建立多维度索引,大大加快查询效率。数据立方体只是多维模型的一个形象的说法

Cuboid特指Kylin中在某一维度组合下所计算的数据

技术架构

基本介绍

ApacheKylin 系统可以分为:


在线查询

离线构建

在线查询模式主要处于上半部分,离线构建处于下半部分。

Kylin的技术架构如下:


数据源主要是Hadoop Hive,数据以关系表的形式输入,保存着待分析的数据,根据元数据的定义,构建引擎从数据源抽取数据,并构建Cube

Kylin可以使用MapReduce或Spark作为构建引擎,构建后的Cube保存在右侧的存储引擎中,一般选用HBase作为存储

完成了离线的构建后,用户可以从查询系统发送SQL进行查询分析

Kylin提供了各种RestAPI,JDBC、ODBC接口。无论从哪个接口进入,SQL最终都会来到Rest服务层,再转交给查询引擎进行处理。

SQL语句是基于数据源的关系模型书写的,而不是Cube,Kylin在设计时,刻意对查询用户屏蔽了Cube的概念。只要理解了关系模型就可以使用Kylin,没有额外的学习门槛,传统的SQL应用也很容易迁移。

查询引擎解析SQL,生成基于关系表的逻辑执行计划,然后将其转换为基于Cube的物理执行计划,最后查询预计生成的Cube并产生结果,整个过程不会访问原始数据源

组件功能

REST Server,提供Resutful接口,例如创建、构建、刷新、合并等Cube相关操作,Kylin的Projects、Tables等元数据管理,用户访问权限控制,SQL的查询等。

Query Engine:使用开源的Apache Calcite框架实现SQL解析,可以理解为SQL引擎层

Routing:负责将解析SQL生成的执行计划转换成Cube缓存的查询,这部分查询时可以秒级甚至毫秒级完成

Metadata:Kylin中有大量的元数据信息,包括Cube的定义、星型模型的定义、Job和执行Job的输出信息、模型的维度信息等等。Kylin的元数据和Cube都存储在HBase中,存储的格式是JSON字符串

Cube Build Engine:所有的模块的基础,它主要负责Kylin预计算中创建Cube,创建的过程是首先通过Hive读取原始数据,然后通过一些MapReduce或Spark计算生成HTable,最后将数据load到HBase表中。

工作原理

Apache Kylin的工作原理是对数据模型做Cube计算,并利用计算的结果加速查询,具体的过程如下:


指定数据模型,定义维度和度量

预计算Cube,计算所有Cuboid并保存为物化视图(存储到HBase中)

执行查询时,读取Cuboid,计算并产生查询结果

高效OLAP分析:


Kylin的查询过程不会扫描原始记录,而是通过预计算预先完成表的关联、聚合等复杂运算

利用预计算的结果来执行查询,相比非预计算的查询技术,其速度一般要快一到两个数量级,在超大的数据集上优势更明显

数据集达到千亿乃至万亿级别时,Kylin的速度可以超越其他非预计算技术的1000倍以上

c029b0765e83656b4547c5044699a5de_bb95bba22d994718a4805ad7c72b569f.png Apache Kylin的核心:Kylin的OLAP引擎由元数据引擎、查询引擎、任务引擎、存储引擎组成。另外,它还有一个REST服务对外 提供查询请求的服务

可扩展性:提供插件机制支持额外的特性和功能

与其他系统的整合:可整合任务调度器、ETL工具、监控及告警系统

驱动包(Drivers):提供ODBC、JDBC驱动支持与其他工具(如Tableau)的整合


相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
1月前
|
SQL 缓存 分布式计算
【跨国数仓迁移最佳实践5】MaxCompute近线查询解决方案助力物流电商等实时场景实现高效查询
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第5篇,解析跨国数仓迁移背后的性能优化技术。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
4月前
|
存储 SQL 分布式计算
19章构建企业级大数据平台:从架构设计到数据治理的完整链路
开源社区: 贡献者路径:从提交Issue到成为Committer 会议演讲:通过DataWorks Summit提升影响力 标准制定: 白皮书撰写:通过DAMA数据治理框架认证 专利布局:通过架构设计专利构建技术壁垒
|
1月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
106 1
|
2月前
|
SQL 存储 监控
流处理 or 批处理?大数据架构还需要流批一体吗?
简介:流处理与批处理曾是实时监控与深度分析的两大支柱,但二者在数据、代码与资源上的割裂,导致维护成本高、效率低。随着业务对数据实时性与深度分析的双重需求提升,传统架构难以为继,流批一体应运而生。它旨在通过逻辑、存储与资源的统一,实现一套系统、一套代码同时支持实时与离线处理,提升效率与一致性,成为未来大数据架构的发展方向。
|
3月前
|
消息中间件 分布式计算 大数据
“一上来就搞大数据架构?等等,你真想清楚了吗?”
“一上来就搞大数据架构?等等,你真想清楚了吗?”
63 1
|
4月前
|
架构师 Oracle 大数据
从大数据时代变迁到数据架构师的精通之路
无论从事何种职业,自学能力都显得尤为重要。为了不断提升自己,我们可以尝试建立一套个性化的知识目录或索引,通过它来发现自身的不足,并有针对性地进行学习。对于数据架构师而言,他们需要掌握的知识领域广泛而深入,不仅包括硬件、网络、安全等基础技术,还要了解应用层面,并熟练掌握至少一门编程语言。同时,深入理解数据库技术、具备大数据实操经验以及精通数据仓库建模和ELT技术也是必不可少的。只有这样,数据架构师才能具备足够的深度和广度,应对复杂的业务和技术挑战。 构建个人知识体系是数据架构师在学习和工作中的一项重要任务。通过系统化、不断深化的知识积累,数据架构师能够有效应对快速变化的商业环境和技术革新,进一
|
6月前
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
467 3
网易游戏 x Apache Doris:湖仓一体架构演进之路
|
6月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。

热门文章

最新文章

推荐镜像

更多