ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【入门】Kylin 基本原理及概念

2020-01-29 12:08:18  阅读:311  来源: 互联网

标签:Cube Kylin 入门 基本原理 查询 cube 维度 HBase


Kylin版本:2.5.1

前言

膜拜大神,Kylin作为第一个由国人主导并贡献到Apache基金会的开源项目,堪称大数据分析界的“神兽”。所以我也是抓紧时间来学习Kylin,感受Kylin所带来的魅力。

一、Kylin简介

Kylin的出现就是为了解决大数据系统中TB级别数据的数据分析需求,它提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,它能在亚秒内查询巨大的Hive表。其核心是预计算,计算结果存在HBase中。

作为大数据分析神器,它也需要站在巨人的肩膀上,依赖HDFSMapReduce/SparkHive/KafkaHBase等服务。

二、Kylin优势

Kylin的主要优势为以下几点:

  • 可扩展超快OLAP引擎:Kylin是为减少在Hadoop/Spark上百亿规模数据查询延迟而设计
  • Hadoop ANSI SQL 接口:KylinHadoop提供标准SQL支持大部分查询功能
  • 交互式查询能力:通过Kylin,用户可以与Hadoop数据进行亚秒级交互,在同样的数据集上提供比Hive更好的性能
  • 多维立方体(MOLAP Cube):用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体
  • BI工具无缝整合:Kylin提供与BI工具的整合能力,如TableauPowerBI/ExcelMSTRQlikSenseHueSuperSet
  • 其它特性:Job管理与监控;压缩与编码;增量更新;利用HBase Coprocessor;基于HyperLogLogDinstinc Count近似算法;友好的web界面以管理,监控和使用立方体;项目及表级别的访问控制安全;支持LDAPSSO

正是有以上那么多优势存在,也吸引了很多企业使用Kylin来分析数据,如图所示:

三、基本原理

Kylin的核心思想是预计算

理论基础是:以空间换时间。即多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问。

大致流程:将数据源(比如Hive)中的数据按照指定的维度和指标,由计算引擎Mapreduce离线计算出所有可能的查询结果(即Cube)存储到HBase中。HBase中每行记录的Rowkey各维度的值拼接而成,度量会保存在column family中。为了减少存储代价,这里会对维度和度量进行编码。查询阶段,利用HBase列存储的特性就可以保证Kylin有良好的快速响应和高并发。如下图所示:

四、架构

如上图所示,Kylin在架构设计上,可大体分为四个部分:数据源构建Cube的计算引擎存储引擎对外查询接口

其中数据源主要是HiveKafka;计算框架默认为MapReduce,也支持Spark;结果存储在HBase中;对外查询接口支持REST APIJDBCODBC

构建Cube的计算引擎模块如下:

1. REST Server

REST Server是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作。此类应用程序可以提供查询、获取结果、触发cube构建任务、获取元数据以及获取用户权限等等。另外可以通过Restful接口实现SQL查询。

2. 查询引擎(Query Engine)

cube准备就绪后,查询引擎就能够获取并解析用户查询。它随后会与系统中的其他组件进行交互,从而向用户返回对应的结果。

3. Routing

负责将解析的SQL生成的执行计划转换成cube缓存的查询,cube是通过预计算缓存在HBase中,这部分查询可以在秒级甚至毫秒级完成,还有一些操作使用过的原始数据(存储在Hadoophdfs中通过hive查询),这部分查询延迟较高。

4. 元数据管理工具(Metadata Manager)

Kylin是一款元数据驱动型应用程序。元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据,其它全部组建的正常运作都需以元数据管理工具为基础,包括cube的定义、星状模型的定义、job的信息、job的输出信息、维度的directory信息等等,Kylin的元数据和cube都存储在HBase中。

5. 任务引擎(Cube Build Engine)

这套引擎的设计目的在于处理所有离线任务,其中包括shell脚本、Java API以及MapReduce任务等等。任务引擎对Kylin当中的全部任务加以管理与协调,从而确保每一项任务都能得到切实执行并解决期间出现的障碍。

6. 存储引擎(Storage Engine)

这套引擎负责管理底层存储,特别是cuboid,其以键值对的形式进行保存。存储引擎使用的是HBase,这是目前Hadoop生态系统当中最理想的键值系统使用方案。Kylin还能够通过扩展实现对其它键值系统的支持,例如Redis

五、基本概念

1. Table(表)

表定义在Hive中,是Data cube (数据立方体)的数据源,在build cube之前,Hive表必须同步在Kylin中。

2. Model(模型)

用来定义一个Fact Table (事实表)和多个Lookup Table (查找表),及所包含的dimension (维度)列、Messures(度量)列、partition(分区)列和date(日期)格式

3. Cube(立方体)

它定义了使用的模型、模型中的表的维度(dimensions)、度量(messures)、如何对段分区( segments partitions)、合并段(segments auto-merge)等的规则。

4. Cube Segments(立方体段)

它是立方体构建(build)后的数据载体,一个segment映射HBase中的一张表。Cube实例构建后,会产生一个新的Segment。一旦某个已经构建的Cube的原始数据发生变化,只需要刷新(fresh)变化的时间段所关联的segment即可。

5. dimension (维度)

维度可以简单理解为观察数据的角度,一般是一组离散的值。

6. Cardinality (维度的基数)

指的是该维度在数据集中出现的不同值的个数。比如“城市”是一个维度,如果该维度下有2000个不同的值,那么该维度的基数就是2000。通常一个维度的基数会从几十到几万个不等,个别维度如id的基数会超过百万甚至千万。

基数超过一百万的维度通常被称为超高基数维度(Ultra High Cardinality, UHC),需要引起设计者的注意。

友情提示:

Cube中所有维度的基数都可以体现出Cube的复杂度,如果一个Cube中有好几个超高基数维度,那么这个Cube膨胀的概率就会很高。在创建Cube前需要对所有维度的基数做一个了解,这样有助于设计合理的Cube

计算基数有多种途径,最简单的方法就是让Hive执行一个count distinctSQL查询。Kylin也提供了计算基数的方法,Kylin对基数的计算方法采用的是HyperLogLog的近似算法,与精确值略有误差,但作为参考值已经足够了。

7. Measures(度量)

度量就是被聚合的统计值,也是聚合运算的结果,一般指聚合函数(如:sumcountaverage等)。比如学生成绩、销售额等。

度量主要用于分析或者评估,比如对趋势的判断,对业绩或效果的评定等等。

8. Fact table(事实表)

事实表是指包含了大量不冗余数据的表,其列一般有两种,分别为包含事实数据的列,包含维度foreign key的列。

9. Lookup table(查看表)

包含了对事实表的某些列扩充说明的字段。

10. Dimenssion Table(维表)

Fact tableLookup table抽象出来的表,包含了多个相关的列,以提供对数据不同维度的观察,其中每列的值的数目称为Cardinatily

六、总结

本文主要介绍了Kylin原理架构、及基本概念。读完本文之后,应该就能了解Kylin定位及意义。更多内容可以去Kylin官网进行了解:传送门

后续还会有更深层次的Kylin系列博文,关注一下啦

标签:Cube,Kylin,入门,基本原理,查询,cube,维度,HBase
来源: https://blog.csdn.net/CREATE_17/article/details/104105555

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有