Apache kylin 入门介绍

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

如果你有海量数据(TB-PB)的多维分析的需求,Kylin是一个不错的选择。

文档参考官网 http://kylin.apache.org/cn/

Kylin的主要特征功能:

  1. 压秒级的查询响应
  2. 对接标准SQL,支持多种数据源
  3. 支持流式数据的分析处理能力
  4. 自带web 管理界面
  5. 支持兼容多个BI工具

Kylin的技术架构(图来自官方文档)
Apache kylin 入门介绍_第1张图片
Kylin是基于Hadoop生态的一个多维分析软件,基于对海量数据进行预先计算,来实现海量数据的压秒级的响应,空间换时间。

  1. 元数据:使用kylin需要预先对数据进行建模,建模主要是设置表之间的join关系,设置分区信息。目前kylin支持星型和雪花模型,建模后,需要进行分析维度和度量的设置。比如说 城市字段是一个维度,比如订单总数是一个度量。这些设置都会存储在元数据(Metadata)中。
    元数据是默认存储在HBase里的,用户的原始数据可以是存储在Hive,RDMS数据库等。Kylin都能支持。
  2. 构建:有了Metadata,kylin就可以根据metadata来进行预先计算。Cube Build Engine,也就是数据立方体构建。

Apache kylin 入门介绍_第2张图片这个图是啥意思呢?
假设我们定义了需要分析数据的四个维度 性别,地区,年龄,日期,有一个度量,比如访问某个网站的总次数。
那kylin的预计算就会进行如下的预先聚合运算

维度组合 度量
性别-地区-年龄-日期 网站的访问总次数
性别-地区-年龄 访问次数
性别-地区-日期 访问次数
性别-年龄-日期 访问次数
地区-年龄-日期 访问次数
性别-地区 访问次数
性别-年龄 访问次数
性别-日期 访问次数
地区-年龄 访问次数
地区-日期 访问次数
年龄-日期 访问次数
性别 访问次数
地区 访问次数
年龄 访问次数
日期 访问次数

kylin通过多个维度的组合,由多到少逐层进行聚合运算。比如四个维度聚合算出sum(访问记录),存储到Hbase里(默认)row key就是维度组合生成的编码,value就是对应的sum度量的值。下面的表格示范了kylin预计算的数据在hbase总的存储形式

Rowkey CF
12-上海-男-2011-1-1 cf1.c=100
12-上海-男-2011-1-2 cf1.c=40
17-上海-男-2011-1-2 cf1.c=12
14-上海-男-2011-1-2 cf1.c=12
14-上海 cf1.c=112
17-上海 cf1.c=112

Kylin 对维度的名称进行了编码,减少了存储的成本,类似下面表格

Rowkey CF
1201012011111 cf1.c=100
1201012011112 cf1.c=40
1701012011112 cf1.c=12
1401012011112 cf1.c=12
1401 cf1.c=112
1701 cf1.c=112
  1. Query engine:查询引擎的核心就是把query路由到对应的cuboid预聚合的数据。由于进行了预先聚合,所以查询需要扫描的数据数量将大幅度减少,所以这就是压秒级反应的秘密所在。
    比如 select sum(a) from table group by area,age 这个sql将会由 地区和年龄这个组合算出来的cuboid来进行回答。Kylin内置的查询引擎是Calcite,Calcite是一个独立与用户和数据源之间的一个sql语法解析执行的引擎。他可以对sql进行校验,解析成语法树,执行树等。kylin重写了Calcite的 Schema 和 table 逻辑,并定义了优化rule,最后转化路由到对应的cuboid。更厉害的是,如果你的sql无法被cuboid回答,kylin还支持pushdown下压到原始数据上查询,保证了统一的交互体验和优雅的查询降级。
  2. RestAPI:Kylin提供了大量的友好的api,供用户调用集成到自己的系统或者运维脚本里。
  3. 界面WebUI:Kylin提供了友好的管理界面。界面用户可以通过可视化的方式来建立数据模型,建立cube,构建cube,以及包含了查询、系统配置、project管理、用户管理、权限管理等。降低了使用和管理的成本。
  4. Real实时分析:传统的大数据分析,往往是对历史数据的查询。随着企业分析越来越精准,以及数据信息变化速率越来越快。更多的企业尤其是互联网企业需要进行实时数据的分析。很显然kylin的上述原理根本无法做到实时,因为ETL和构建都需要时间,这个延迟是无法避免的。Kylin目前存在两种实时方案。
    • 一种是近似实时,提供了分钟级别的延迟方案。基本原理就是提高了构建的颗粒度。比如原来是按照天构建,变成了分钟级别的构建。构建还是利用MapReducer等
    • 一种是准实时,基于内存的实时构建,在一个时间窗内,对实时数据进行聚合,聚合达到一个阈值的时候,实时的构建数据会转义到传统的hbase中。变成历史构建数据,当用户sql跨域实时和历史的时候,kylin将通过将实时构建和历史数据结合来回答用户的query。由于是在内存中进行的预计算。所以几乎达到了秒级的延迟。

Apache kylin 的这些功能足以让你在海量数据多维分析场景下摆脱传统方式的低延迟,语义兼容差,成本低等问题。成为OLAP的一大神器。

你可能感兴趣的:(Apache,kylin,大数据,olap,apache,kylin,real,olap,hadoop)