Kylin安装及使用

背景 : 近来公司要做报表,随简单研究一下Kylin。Kylin可谓是我泱泱中华在Apace史上耀眼的一笔。

作用: Kylin是强大的OLAP分析引擎,详见官网。
Kylin 1.6 CDH5.10

安装

​ Kylin有两种安装方式:单机及集群。本文以集群为例。单机版Kylin安装起来还是挺简单的,解压即安装。

配置

​ 1.环境变量的配置:

export HADOOP_USER_NAME=hdfs
export KAFKA_HOME=/opt/cloudera/parcels/KAFKA-2.1.1-1.2.1.1.p0.18/lib/kafka
export HCAT_HOME=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hive-hcatalog
export HIVE_HOME=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hive
export KYLIN_HOME=/home/syphcdh/kylin/kylin-1.6.0-cdh5.7
export PATH=${PATH}:${KYLIN_HOME}/bin

​ 2.Kylin.

​ 修改:

Kylin server mode, valid value [all, query, job]

kyin.server.mode=all

kylin.rest.servers=xxxxxx:7070,xxxxxx:7070

​ 仅支持一台机器为all

问题:

​ 1.can`t not fount org.apache.hadoop.hive.serde2.typeinfo.TypeInfo

​ 配置文件中加入:

​ kylin.job.mr.lib.dir=/opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/sentry/lib/

​ 2.hive的一些包会报找不到

​ 最简单的办法:将hive相关的包放入Kylin的lib目录下

​ 3.Application with id ‘application_1495078923524_0022’ doesn’t exist in RM or Timeline Server.

​ NodeManger内存不足

4.Kylin leverages HBase coprocessor to optimize query performance. After new versions released, the RPC protocol may get changed, so user need to redeploy coprocessor to HTable.
There’s a CLI tool to update HBase Coprocessor:

KYLIN_HOME/bin/kylin.sh org.apache.kylin.storage.hbase.util.DeployCoprocessorCLI KYLIN_HOME/lib/kylin-coprocessor-*.jar all

5.2017-07-20 17:03:18,360 INFO org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService: The cube visit did
not finish normally because scan num exceeds threshold
org.apache.kylin.gridtable.GTScanExceedThresholdException: Exceed scan threshold at 393073
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService 1.hasNext(CubeVisitService.java:258)atorg.apache.kylin.storage.hbase.cube.v2.HBaseReadonlyStore 1$1.hasNext(HBaseReadonlyStore.java:111)
at org.apache.kylin.gridtable.GTAggregateScanner.iterator(GTAggregateScanner.java:139)
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService.visitCube(CubeVisitService.java:290)
at org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.generated.CubeVisitProtos

原因3点:
说白了就是kylin关于hbase的3个参数:
kylin.query.scan.threshold
kylin.query.mem.budget
kylin.query.coprocessor.mem.gb
任何一个参数不达标都会报regionserver 都会报org.apache.kylin.gridtable.GTScanExceedThresholdException: Exceed scan threshold ,而前端查询kylin是timeout

6.当用kylin做报表时,kylin报错
2017-06-26 14:51:52,523 ERROR [IPC Server handler 3 on 33033] org.apache.Hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1498453243500_0032_m_000000_0 - exited : Java.lang.ArrayIndexOutOfBoundsException: -1 at org.apache.kylin.engine.mr.steps.FactDistinctHiveColumnsMapper.putRowKeyToHLL(FactDistinctHiveColumnsMapper.java:179)
at org.apache.kylin.engine.mr.steps.FactDistinctHiveColumnsMapper.map(FactDistinctHiveColumnsMapper.java:155)

经过查看kylin的issue得知
The problem is when you have same name column in Dim and Fact Table
SOL1: Rename columns in Hive or use Hive’s view
SOL2: Will be solved in Kylin 1971 (kylin2.0中已解决)
维度表跟维度表之间也不要有相同的字段

7.不同的cube维度不能相同

延伸

关于MPP和Cube预处理的差异,重复如下:

MPP 的基本思路是增加机器来并行计算,从而提高查询速度。比如扫描8亿记录一台机器要处理1小时,但如果用100台机器来并行处理,就只要一分钟不到。再配合列式存储和一些索引,查询可以更快返回。要注意这里在线运算量并没有减小,8亿条记录还是要扫描一次,只是参与的机器多了,所以快了。

MOLAP Cube 是一种预计算技术,基本思路是预先对数据作多维索引,查询时只扫描索引而不访问原始数据从而提速。8亿记录的一个3维索引可能只有几万条记录,规模大大缩小,所以在线计算量大大减小,查询可以很快。索引表也可以采用列存储,并行扫描等MPP常用的技术。但多维索引要对多维度的各种组合作预计算,离线建索引需要较大计算量和时间,最终索引也会占用较多磁盘空间。

最后的最后,你知道,小省是谁吗?偷偷的告诉你,小省喊我去玩啦~~~

你可能感兴趣的:(工作之行)