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

KVMXen面试_面试

所以只能查询出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,也就是最终结果;如图所示解释了此流程。

KVMXen面试_kylin_02

与旧算法相比,快速算法主要有两点不同:

  • Mapper会利用内存做预聚合,算出所有组合;Mapper输出的每个Key都是不同的,这样会减少输出到Hadoop MapReduce的数据量,Combiner也不再需要;
  • 一轮MapReduce便会完成所有层次的计算,减少Hadoop任务的调配。

 

12.cube优化?

  • 剪枝优化(衍生维度,聚合组,强制维度,层级维度,联合维度)
  • 并发粒度优化
  • Rowkeys优化(编码,按维度分片,调整维度顺序)
  • 降低度量精度
  • 及时清理无用的segment