国人之光:大数据分析神器Apache Kylin

一、简介

Apache Kylin™是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区。之所以说它是国人之光,是因为它是首个由国人主导的Apache顶级开源项目,能在亚秒内查询巨大的表。 

二、基本概念

先了解一下几个概念,如下有一张表
ID 客户号 交易日期 交易类型 金额
1 001 20201230 工资代发 1000000
2 002 20210101 转账 66666
3 003 20210115 信用卡还款 1888
查询某个客户在哪个时间进行某种交易的金额,这种是多维分析,其中客户号、交易日期和交易类型是维度(Dimensions),金额是度量(Measures)
根据表格中三个维度一个度量,可以画出如下图形

对于一个多维模型,在查询上有多种组合,比如一维的:客户号/交易日期/交易类型二维的:客户号+交易日期/客户号+交易类型/交易日期和交易类型三维的:客户号+交易日期+交易类型对于每一种组合,称之为Cuboid,这这些组合的统一,则是Cube。Cube定义了使用的模型、模型的维度和度量等信息。

三、作用及原理

有些读者就要说了:概念讲了一堆,就是不说它到底为什么出现,解决什么问题,难怪阅读量这么少
别急,这不就准备讲了嘛。Kylin是为减少在Hadoop/Spark上百亿规模数据查询延迟而设计的。
对于效率要求较高的大规模数据集的查询,尤其多维查询的时候,数据仓库中一般存在事实表和维度表,需要关联很多维度表,这就给查询带来一定的压力,查询效率低下。为了解决这个问题,Kylin应运而生。
但是Kylin为什么快呢?
主要是因为它的预计算,它将多维分析可能用到的度量进行预计算,将计算好的结果保存成Cube并存储到HBase中,供查询时直接访问。说到底就是用空间换时间。
大致流程将数据源(比如Hive)中的数据按照指定的维度和指标,由计算引擎MapReduce离线计算出所有可能的查询结果(即Cube)存储到HBase中。HBase中每行记录的Rowkey由各维度的值拼接而成,度量会保存在column family中。为了减少存储代价,会对维度和度量进行编码。查询阶段,利用HBase列存储的特性就可以保证Kylin有良好的快速响应和高并发。

四、Kylin的架构 


Kylin的架构主要有这几个部分:
源数据:Hive、Kafka、RDBMS等;
对外查询接口:REST API、JDBC/ODBC;
存储引擎:HBase;
构建Cube的计算引擎
 其中构建Cube的计算引擎模块如下:
REST Server:是一套面向应用程序开发的入口点,旨在实现针对Kylin平台的应用开发工作。
Query Engine:当cube准备就绪后,查询引擎就能够获取并解析用户查询。
Routing:查询路由,负责将解析的SQL生成的执行计划转换成cube缓存的查询,若查询没办法从cube缓存中获取,则下压至数据源进行查询。
Metadata:Kylin是由元数据驱动的。元数据管理工具是一大关键性组件,用于对保存在Kylin当中的所有元数据进行管理,其中包括最为重要的cube元数据。
Cube Build Engine:这套引擎的作用在于处理所有离线任务。

五、总结

本文大概介绍了Kylin以及一些相关的概念和原理、架构。更多内容可以去Kylin 官网进行了解.
大数据从入门到放弃 文章被收录于专栏

写点大数据相关的内容,一起交流进步

全部评论

相关推荐

小厂面经,也是我的处女面(30min)1.自我介绍2.spring boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务