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

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

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(正在更新…)

章节内容

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

  • Apache Druid 和 Kafka 结合
  • Druid 导入数据流程
  • 查询案例 SQL

在这里插入图片描述

背景历史

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)的秒级响应,目前国内很多公司都在使用。

在这里插入图片描述

项目特点

  • 数据源和模型:主要支持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查询。

基本术语

数据仓库

数据仓库是一种信息系统的资料存储理论,强调的是利用某些特性的资料存储方式,让所包含的资料特别有利于分析和处理,从而产生有价值的咨询,并可依此做出决策。
利用数据仓库的方式存放的资料,具有一旦存入,便不会随时发生变动的特性,此外,存入的资料必包含时间属性,通过一个数据仓库中含有大量的历史性资料,并且它可以利用特定的分析方式,从其中发掘出特定的资讯。

在这里插入图片描述

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
FROMkylin_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即多维立方体,也叫数据立方体。

在这里插入图片描述
这个由三个维度(维度数超过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倍以上

Kylin生态

在这里插入图片描述

  • Apache Kylin的核心:Kylin的OLAP引擎由元数据引擎、查询引擎、任务引擎、存储引擎组成。另外,它还有一个REST服务对外 提供查询请求的服务
  • 可扩展性:提供插件机制支持额外的特性和功能
  • 与其他系统的整合:可整合任务调度器、ETL工具、监控及告警系统
  • 驱动包(Drivers):提供ODBC、JDBC驱动支持与其他工具(如Tableau)的整合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1557256.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS NEXT - 表单录入组件封装(TextInput)

demo 地址: https://github.com/iotjin/JhHarmonyDemo 组件对应代码实现地址 代码不定时更新,请前往github查看最新代码 HarmonyOS NEXT - 表单录入组件封装(TextInput) 序JhFormInputCellJhFormSelectCellJhLoginTextField 序 鸿蒙next中有两…

PMP--冲刺题--解题--81-90

文章目录 12.采购管理--1.规划采购管理--在自制或外购分析中,可以使用回收期、投资回报率(ROI)内部报酬率(IRR)、现金流贴现、净现值(NPV)、收益成本净现值(BCA)或其他分…

如何使用ssm实现公司进销存管理系统设计与开发

TOC ssm792公司进销存管理系统设计与开发jsp 第1章 绪论 1.1选题动因 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广…

python画图|曲线动态输出基础教程

在前述学习过程中,已经掌握基本的曲线图像画法,并尝试探索过3D动画基础教程。 相关文章可以通过下述链接直达: python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客 python动画教程|Animations using Matplotlib-官网教程程…

电玩体验馆计时软件可以倒计时的软件试用版下载 佳易王ps5计时器管理系统使用教程

一、前言 【软件试用版下载可以点击本文章最下方官网卡片】 电玩体验馆计时软件可以倒计时的软件试用版下载 佳易王ps5计时器管理系统使用教程 1、软件能够记录玩家开始的时间和节数时间,从而计算出时长。 2、根据预设的收费标准,软件可以自动计算出…

各省份自然灾害损失造成的直接经济损失数据(2009-2022年)

自然灾害是自然演变过程中不可避免的现象,它们对人类社会构成了巨大的威胁。中国作为一个自然灾害频发的国家,面临着种类繁多的灾害挑战,包括气象灾害、地质灾害、海洋灾害、生物灾害和森林草原火灾等。 数据来源:《中国环境统计…

【GESP】C++一级练习BCQM3030,保留12位小数

浮点数数位保留练习,%m.nf知识点,已在BCQM3027中详细介绍。 题解详见:https://www.coderli.com/gesp-1-bcqm3030/ 【GESP】C一级练习BCQM3030,保留12位小数 | OneCoder浮点数数位保留练习,%m.nf知识点,已在…

培训机构客户管理系统的设计+ssm论文源码调试讲解

2 系统开发环境 2.1微信开发者工具 微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程…

Android车载音频系统概览

目录 1. 什么是Android车载音频系统 2. Android 声音和声音流 2.1 Android 声音 2.2 外部声音流 2.3 输出设备 章节说明:本节内容是Android车载音频系统简介。 1. 什么是Android车载音频系统 官方英文名称是:Automotive audio systems 由于汽车上无论是音频设备的数量还…

QT 实现图片查看工具

QT 实现图片查看工具 1、选择图像文件 单文件选择 QFileDialog::getOpenFileName多文件选择 QFileDialog::getOpenFileNamesQList<QString> imageNames = QFileDialog::getOpenFileNames(this,tr("打开图片"),"",tr("图片文件 (*.png *.jpg *.b…

OpenHarmony中OpenSSL从1.1.1 升级到3.0.7 时不支持MD4算法导致wpa_supplicant报错问题解决

OpenHarmony中OpenSSL从1.1.1 升级到3.0.7 时不支持MD4算法导致wpa_supplicant报错问题解决 1 问题现象 我们在测试EAP-PEAP(MSCHAPV2)功能时发现如下打印,导致认证失败 2 初步分析 openssl_digest_vector 中 调用EVP_DigestInit_ex 时如果报错 会打印"OpenSSL: EVP…

人工智能重点知识点总结整理

一、章节知识点目录 绪论知识表示方法确定性推理非经典推理计算智能机器学习完结篇二、每章重点内容 1. 绪论 定义:人工智能(AI)

厨房用品分割系统源码&数据集分享

厨房用品分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV3&#xff06;yolov8-seg-AFPN-P345等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al ln…

论文阅读笔记-XLNet: Generalized Autoregressive Pretraining for Language Understanding

前言 Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT,XLNet提出一个框架来连接语言建模方法和预训练方法。我们所熟悉的BERT是denoising autoencoding模型,最大的亮点就是能够获取上下文相关的双向特征表示,所以相对于标准语言模型(自回归)的预…

测绘工程专业职称申报条件是什么?

关于测绘工程专业职称申报条件&#xff0c;甘建二从初级、中级、高级给大家说一下&#xff1a; 一、初级&#xff08;助理&#xff09;测绘工程工程师评审条件&#xff1a; 1、测绘类或者相近专业类毕业 2、专科毕业满3年并且从事专业技术员职务工作2年以上 3、本科毕业后&a…

Qt-QVBoxLayout布局类控件(41)

目录 描述 属性 使用 每一个widget只能有一个布局管理器 描述 使⽤ QVBoxLayout 表⽰垂直的布局管理器. V 是 vertical 的缩写. 为此Qt提供了布局管理器 属性 layoutLeftMargin左侧边距layoutRightMargin右侧边距layoutTopMargin上⽅边距layoutBottomMargin下⽅边距layo…

Linus Torvalds 要求内核开发人员编写更好的 Git 合并提交信息

昨天在宣布 Linux 6.12-rc2 内核时&#xff0c;Linus Torvalds 要求内核维护者在提交信息方面做得更好。Torvalds 尤其希望内核维护者在描述拉取请求中的变更时&#xff0c;能更好地使用积极、命令式的语气。 Linux创建者在6.12-rc2 公告中解释道&#xff1a; 总之&#xff0c…

ChatGPT Canvas:系统提示词泄漏了~

OpenAI 推出了一款叫做 Canvas 的新工具&#xff0c;用来帮助用户更好地与 ChatGPT 协作写作和编程。详细介绍可以看这篇文章&#xff1a;ChatGPT Canvas&#xff1a;交互式对话编辑器-CSDN博客​编辑 以下是 OpenAI 新功能 “Canvas” 的系统提示内容 你是 ChatGPT&#xff0…

域渗透之: 域渗透环境搭建详解基于VMware

域控环境介绍 在域架构中&#xff0c;最核心的就是域控主机&#xff0c;域控主机分为三种: 普通域控额外域控只读域控 域控环境相关知识点介绍 创建域环境首先就是要创建域控主机。域控主机创建完成以后&#xff0c;需要把所有的计算机拉入域中&#xff0c;这样就形成了域控…

棒球运动物体检测系统源码分享

棒球运动物体检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…