1.0 Kylin
1.1 Kylin简介
1.1.1 Kylin术语
-
Data Warehouse(数据仓库)
-
Business Intelligence(商业智能BI) -->数据转为知识
-
OLAP
-
-
-
Presto是ROLAP Kylin是MOLAP
-
OLAP Cube:MOLAP基于多维数据集,一个多维数据集成为一个OLAP Cube
-
-
-
-
上述的7个Cuboid组成1个Cube
-
计算顺序:先计算角度7,在角度7的基础上计算其他角度
-
-
Dimension(维度)和Measure(度量)
1.1.2 Kylin架构
- 计算层:Metadata(元数据) Cube Build Engine(cube构建引擎)
- 可以离线和实时,数据存储在HBASE(随机实时的查询)
- 查询层:REST Server(rest服务层,对接用户的SQL)和 Query Engine(查询引擎层,把SQL转换为机器识别的语言)
- 路由层(Routing):现在关闭了 不是多维的查询只去HBase上查询
1.1.3 kylin的特点
- 标准SQL接口
- 作为一个molap依旧可以进行SQL查询
- 支持超大数据集
- 亚秒级响应
- 可伸缩性和高吞吐率
- BI工具集成
1.2 Kylin安装
-
要启动hadoop历史服务器 kylin要通过历史服务器来查看上一个任务有没有完成,才可以进行下一个任务
1.3 Kylin使用
这是重点章节
- 7天小合并 28天大合并
- 通过RESTful API实现
- 查询的时候 能做的查询只有OLAP的查询–>group by的字段加上聚合函数;事实表在前;join的时候,要用建模型的join
1.4 Kylin Cube构建原理
1.4.1 维度和度量
1.4.2 Cube和Cuboid
- 0维的可以不算 kylin也没有算
- 0维就是没有group by
1.4.3 Cube存储原理
-
维度字典表:通过维度字典编码把每一个维度值转化为int值
-
就是形成一个表,用int值来表查询
1.4.4 Cube构建算法
构建算法都是先算最高维的数据
- 逐层构建算法(layer)
- 快速构建算法(inmem)
1.5 Kylin Cube构建优化
1.4 和1.5不重要
1.5.1 使用衍生维度(derived dimension)
- 使用对应表的外键进行算 不按照选择的字段的进行计算—>尽量不使用derived
- 减少计算量但是会拖慢查询速度
1.5.2 使用聚合组(Aggregation group)
三种区分开就可以
- 一种强大的减枝工具
- 强制维度(必须要有的维度A)
- 层级维度(A->B,B不可以单独出现)
- 联合维度(AB作为一个整体 )
1.5.3 Row Key优化
原理理解就可以
- 被用作过滤的维度放在前面(优化查询)
- 基数大的维度放在基数小维度前面(优化计算)
- count distinct的数大的就是基数大
- kylin在选择的时候直接选择的cuboid小的 所以我们尽可能的把基数大的数据放在前面
- 设计HBase 的rowkey时 要一起查询的数据尽量放在一起
1.5.4 并发粒度优化
- segment:hbase中的一张表
- 主要是增加分区从而增加并行度
- 阈值减少到5G
hbase有列族 分区(region)怎么来的:自己分裂,预分区
1.6 Kylin BI工具集成
1.6.1 JDBC
- kylin对接dwd层(星型模型)
- 也可以直接对接展示系统就可以不用往继续走dw层
1.6.2 Zepplin
- zk的master的端口号也是8080,改为8089
kylin:多维分析 OLAP
presto:适合复杂的分析