学习 Kylin(一):简介

简介

Apache Kylin 由 EBay 中国卓越中心研发,首个由国人贡献的 Apache 顶级项目

Kylin 的核心思想是预计算,用空间换时间,这让 Kylin 即使查询超大规模数据集,仍然保持高性能和高并发

国内使用 Kylin 的互联网公司主要有:字节跳动、美团、唯品会等

Kylin 的爸爸:Kyligence

数据模型

数据仓库模式主要有分为:

  • 由 Ralph Kimball 提出的多维数据模型
  • 由 Bill Inmon 提出的 3NF 数据模型

其中,多维数据模型又分星型模型、雪花模型和事实星座模型等

Kylin 只支持星型模型,基于以下考虑:

  • 星型模型是最简单,也是最常用的模型;
  • 由于星型模型只有一张大表,因此它相比于其他模型更适合于大数据处理;
  • 其他模型可以通过一定的转换,变为星型模型。

星型模型主要由一张事实表和通过外键与事实表相关联的多张维度表组成

👇,以一次超市购物举例说明:

小李于下午两点钟在罗森便利店高新园区分店购买一瓶可口可乐花了三块钱

  • WHEN 下午两点 2018-06-05 14:00:00
  • WHERE 罗森便利店高新园区分店
  • WHO 小李
  • WHAT 可口可乐 * 1,3.00 RMB

那么,对这一次购物事实进行建模的话,可能是:

事实表:SALES_FACT

ID SALE_DATE SHOP_ID CUSTOMER_ID ITEM_ID PRICE AMOUNT
1 20180605 6 123456 456789 3.00 1.00

销售日期维度表:DATE_DIM

ID DATE YEAR MONTH DAY WEEK
20180604 2018-06-04 2018 6 4 MONDAY
20180605 2018-06-05 2018 6 5 TUESDAY

店铺维度表:SHOP_DIM

ID NAME CITY
5 罗森便利店机场分店 DL
6 罗森便利店高新园区分店 DL

顾客维度表:CUSTOMER_DIM

ID NAME SEX
123456 小张 FEMALE
123456 小李 MALE

单品维度表:ITEM_DIM

ID NAME
4567898 雪碧
456789 可口可乐

以销售日期和店铺的角度汇总销售金额:

select  
  sf.SALE_DATE,
  sf.STORE_ID,
  sum(price) as GMV
from sales_fact sf  
group by sf.SALE_DATE, sf.STORE_ID  

Cube

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

对于每一种维度的组合,将度量做聚合运算,然后将运算的结果保存为一个物化视图,称为 Cuboid

所有维度组合的 Cuboid 作为一个整体,称为 Cube

cube

以👆超市购物为例,销售日期维度、店铺维度、顾客维度和单品维度 4 个维度组合,可能性有 16 种:

  • C(4, 0) 1 种
  • C(4, 1) 4 种
  • C(4, 2) 6 种
  • C(4, 3) 4 种
  • C(4, 4) 1 种

架构

Kylin 架构图:

kylin

由架构图,可以观察到:

  1. 事实、维度数据存储在 Hive 中,Cube 数据存储在 HBase 中;
  2. Routing,路由到 Hive 的查询是分钟级的,路由到 HBase 的查询才是秒级的

参考