LW Senior Architect

信贷汇总统计分析 - apache kylin问题汇总

2018-04-18
Wu Liu

汇总kylin2.3.0中碰到的所有问题

work with kap

安装

  • kap 和 kylin使用相同jdbc url
  • user/pwd:ADMIN/KYLIN
  • env 命令结合grep的使用方法,可以用来查看环境变量

备份

  • 使用sh 命令
    metastore.sh -h
    

即可查看备份cube的metadata所需的所有命令。

other cmd

  • 从文件中查找对应的字符串
    grep -i text file
    
  • 动态查看文件(例如日志在不断更新的时候)
    tail -f file
    

problems

build cube

  1. 在step3,extract fact table distinct columns or step 4

抛出异常信息:the value of property statistic.enabled must not be null.

解决方案:

  1. 构建cube的第一步失败

step 1 name:create intermediate flat hive table的时候,抛出NPE, 查看日志信息,发现在mysql里面对应step 1的hive 宽表 没有创建出来。

解决方案: 可能是HCatalog安装有点问题。也有可能kap RC版不稳定。

query

  1. 集合A union 集合B,如果A为空,那么基于A union B作聚合计算会抛错

解决的问题

  1. 内存溢出
    Java Heap Exception
    

我们每次启动kylin,其实只是读取kylin.properties里面的参数,应用于hbase,并启动tomcat。
在tomcat/bin目录下添加setenv.sh,在其中添加如下参数:

CATALINA_OPTS="
-server 
-Xms6000M 
-Xmx6000M 
-Xss512k 
-XX:NewSize=2250M 
-XX:MaxNewSize=2250M 
-XX:PermSize=128M
-XX:MaxPermSize=256M
"

refer to :tomcat jvm

  1. 启动kylin的时候,报出kylin_cluster_meta表已经存在的错误

解决步骤:通过Hbase shell命令进入hbase客户端,list所有表名,发现根本没有kylin_cluster_meta表。
难道表在.meta里面没有被发现?采用scan ‘hbase:meta’命令,打印出来的信息依然没有任何相关信息。
那只能说明在hdfs的某个地方存放着hbase表的信息,造成建表的时候,落地到hdfs的时候发现该地址已经被占用了。

最终解决方案:

find /opt -name 'zkcli.sh'

找到对应的zkcli.sh文件,根据其参数得到下属命令:

sh zkcli.sh -zkhost:zkhost1:2181,zkhost2:2181,zkhost3:2181 -cmd clear /kylin

在此之前,可以通过下属命令查看/kylin目录下面都有哪些信息,如下:

sh zkcli.sh -zkhost:zkhost1:2181,zkhost2:2181,zkhost3:2181 -cmd ls /kylin

可以从里面看到所有kylin meta相关的信息。

  1. 在查询的时候会抛出:
    org.apache.kylin.rest.exception.InternalErrorException:Query returned xxxxxxxxx rows exceeds threshold 5000000
    

solution:

在kylin.properties里面设置

kylin.query.max-return-rows=10000000
  1. merge segments的过程中,有时候会碰到多个segments合并后依然为空,merge就会失败 解决方案:
    kylin.cube.is-automerge-enabled=false;
    

    然后手动merge一个size >0 segment的多个segments,即可规避该问题。

note:
此参数可在system settings里面设置,无需重启。

  1. fact表和维度表关联的时候,使用组合主键。那么该维度表的derived字段的值在cube里面都是空的。 解决方案:
    维度表的组合主键都需要设置为normal类型而不是derived类型

参考


Similar Posts

下一篇 hive - 语法树

Comments