Kylin官方优化参考

#refer: http://kylin.apache.org/docs20/howto/howto_optimize_build.html

1.使用和hive相同的partition cloumn

关闭自动合并设置

hive.merge.mapfiles
false
Disable Hive's auto merge

2.重新分布中间表

作用: 防止不均匀;
默认是100W一个文件,你可以通过conf/kylin.properties,
kylin.job.mapreduce.mapper.input.rows=500000这个进行配置,
在构建cube的时候有一个配置叫做shard by这个可以设置,这个用于高基数的维度有很大作用,可以避免数据的重新分布也就是减少了shuffle 这个起码可以减少40%的build时间。

3.Extract Fact Table Distinct Columns

在这个阶段 kylin会使用mr来获取不同的维度的value,以供下一步进行编码 生成字典,
如果发现mapper工作的非常慢,这显示是你的cube太复杂了,请进行剪枝,
如果发现reducer发生了oom,这显示你的cubiod发生了膨胀(剪枝).或者是你的yarn 内存设置。

4.Build Dimension Dictionary

从上一步,获取到了各个维度的distinct values.kylin将会在内存中生成字典.通常情况下会很快。
但是如果出现高基数的维度,也就是值非常多,然后kylin会报错,如:Too high cardinality is not suitable for dictionary。这时候你就得考虑一下在建cube的时候,使用别的方式进行编码rowkey,比如int之类的。

5.Build Base Cuboid

这一步如果你发现你的reducer 个数过于少,
则可以通过kylin.job.mapreduce.default.reduce.input.mb=200这个进行设置。

6.Build Cube

这个阶段需要很多的内存 默认是3G 这个你可以通过配置文件conf/kylin_job_conf_inmem.xml进行配置
mapreduce.map.memory.mb
6144



mapreduce.map.java.opts
-Xmx5632m

7.Convert Cuboid Data to HFile

默认是一个region大小5G,如果你观察到reducer的个数太少了,
你可以通过配置文件conf/kylin.properties进行配置。
kylin.hbase.region.cut=2
kylin.hbase.hfile.size.gb=1

#

你可能感兴趣的:(Kylin官方优化参考)