kylin官方给出的优化 以及各个步骤容易出现的问题

来源:互联网 发布:淘宝怎么排名靠前 编辑:程序博客网 时间:2024/06/08 12:58

转:http://blog.csdn.net/qqpy789/article/details/77479998

1.使用和hive相同的partition cloumn
关闭自动合并设置
<property> <name>hive.merge.mapfiles</name> <value>false</value> <description>Disable Hive's auto merge</description></property>
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进行配置<property>
<name>mapreduce.map.memory.mb</name>
<value>6144</value>
<description></description>
</property>

<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx5632m</value>
<description></description>
</property>
7.Convert Cuboid Data to HFile
默认是一个regin 5G,如果你观察到reducer的个数太少了,你可以通过配置文件conf/kylin.properties进行配置
kylin.hbase.region.cut=2
kylin.hbase.hfile.size.gb=1

阅读全文
0 0
原创粉丝点击