Kylin 面试问题
面试官惨绝人寰输出
1.Kylin的优点和缺点?
优点:预计算,界面可视化
缺点:依赖较多,属于重量级方案,运维成本很高
不适合做即席查询
预计算量大,非常消耗资源
2.Kylin的rowkey如何设计?
Kylin rowkey的编码和压缩选择
维度在rowkey中顺序的调整,
将过滤频率较高的列放置在过滤频率较低的列之前,
将基数高的列放置在基数低的列之前。
在查询中被用作过滤条件的维度有可能放在其他维度的前面。
充分利用过滤条件来缩小在HBase中扫描的范围, 从而提高查询的效率。
3.Kylin的cuboid,cube和segment的关系?
Cube是所有cubiod的组合,一个cube包含一个或者多个cuboid
Cuboid 在 Kylin 中特指在某一种维度组合下所计算的数据。
Cube Segment 是指针对源数据中的某一片段,全量构建的cube只存在唯一的segment,该segment没有分割时间的概念,增量构建的cube,不同时间的数据分布在不同的segment中
4.一张hive宽表有5个维度,kylin构建cube的时候我选了4个维度,我select *的时候会有几个维度字段?
select * from wedw_dw.t_kylin_test_df
所以只能查询出4个字段
5.其他olap工具有了解过吗?
了解过,kylin,druid
6.kylin你一般怎么调优
Cube调优
l剪枝优化(衍生维度,聚合组,强制维度,层级维度,联合维度)
l并发粒度优化
lRowkeys优化(编码,按维度分片,调整维度顺序)
l降低度量精度
l及时清理无用的segment
Rowkey调优
lKylin rowkey的编码和压缩选择
l维度在rowkey中顺序的调整,
l将过滤频率较高的列放置在过滤频率较低的列之前,
l将基数高的列放置在基数低的列之前。
l在查询中被用作过滤条件的维度有可能放在其他维度的前面。
充分利用过滤条件来缩小在HBase中扫描的范围, 从而提高查询的效率。
7.kylin的原理和优化?
原理:预计算
优化同上
8.为什么kylin的维度不建议过多?
Cube 的最大物理维度数量 (不包括衍生维度) 是 63,但是不推荐使用大于 30 个维度的 Cube,会引起维度灾难。
9.Kylin cube的构建过程是怎么样的?
- 选择model
- 选择维度
- 选择指标
- cube设计(包括维度和rowkeys)
- 构建cube(mr程序,hbase存储元数据信息及计算好的数据信息)
10.Kylin维度优化有几种类型?
- 衍生维度
- 聚合组
- 强制维度
- 层级维度
- 联合维度
11.Kylin的构建算法
快速构建算法(inmem)
也被称作“逐段”(By Segment) 或“逐块”(By Split) 算法,从1.5.x开始引入该算法,利用Mapper端计算先完成大部分聚合,再将聚合后的结果交给Reducer,从而降低对网络瓶颈的压力。该算法的主要思想是,对Mapper所分配的数据块,将它计算成一个完整的小Cube 段(包含所有Cuboid);每个Mapper将计算完的Cube段输出给Reducer做合并,生成大Cube,也就是最终结果;如图所示解释了此流程。
与旧算法相比,快速算法主要有两点不同:
- Mapper会利用内存做预聚合,算出所有组合;Mapper输出的每个Key都是不同的,这样会减少输出到Hadoop MapReduce的数据量,Combiner也不再需要;
- 一轮MapReduce便会完成所有层次的计算,减少Hadoop任务的调配。
12.cube优化?
- 剪枝优化(衍生维度,聚合组,强制维度,层级维度,联合维度)
- 并发粒度优化
- Rowkeys优化(编码,按维度分片,调整维度顺序)
- 降低度量精度
- 及时清理无用的segment