文章主要针对在使用kyligence或者kylin时候出现的一些问题总结:

问题1

使用 Spark 构建报错 "OutOfMemoryError of PermGen Space"

问题描述: 使用 Spark 构建报错 java.lang.OutOfMemoryError: PermGen space.

根本原因: PermSize 的资源不足(默认值为 256M)

解决方案: 在 kylin.properties 中添加参数 MaxPermSize 如下: kylin.engine.spark-conf.spark.driver.extraJavaOptions=-Dhdp.version=current -XX:MaxPermSize=512M

关键信息:

18/05/25 16:46:04 INFO execution.SparkSqlParser: Parsing command: ai_kappy_prd.kylin_intermediate_ue_lifecircle_model_clone_84aff9d1_452b_4d0b_9bf7_4e523d5ba802
 18/05/25 16:46:05 INFO parser.CatalystSqlParser: Parsing command: string
 Exception in thread "Driver" java.lang.OutOfMemoryError: PermGen space
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

查询下压报错 "Expected only partition pruning predicates"

根本原因: 这是 Spark 的一个已知问题,当使用 SparkSQL v2.1 查询 Hive 表分区列时,列名大小写敏感。

解决方案: 使用准确的大小写来进行查询,比如有一个 Hive 分区列名为 'date',查询的时候必须用 'date' 而不能使用 'DATE'

问题2

重置元数据后,页面弹框报错 "Unknown Error"

问题描述: 重置元数据后,刷新 Kyligence Enterprise UI 会提示 “未知错误”。

根本原因: 执行 $KYLIN_HOME/bin/metastore.sh reset 来重置元数据,同时会将用户(包括 ADMIN 用户)信息一并删除。

解决方案: 重启 Kyligence Enterprise,如果系统发现元数据中没有 ADMIN 用户有关的信息,会自动创建一个。

关键信息:

{
    "code" : "999",
    "data" : null,
    "msg" : "Full authentication is required to access this resource",
    "stacktrace
  "exception" : "Full authentication is required to access this resource",
  "url" : "http://sandbox.hortonworks.com:7070/kylin/api/canary/local_report"
}

问题3

如何提高读取 Cube 数据的并行度

在构建 Cube 时,每个 Cube 将根据其估计的物理尺寸进行分片。 一个更大的 Cuboid ,它将获得更多的分片。

用户可以手动修改 kylin.properties 中的以下参数,以提高读取 Cube 数据的并行度。

如果 Cuboid 的分片数大大超过总 CPU 内核数量,则可以减小 kap.storage.columnar.shard-max 的值,该值指定每个 Cuboid 的最大分片数,默认值为 1000。

如果需要改进一些小 Cuboid 的并行度,可以增加 kap.storage.columnar.shard-min 的值,它指定每个 Cuboid 的最小分片数,默认值为 1

问题4

在 Hive 中使用 Parquet 或者 ORC 存储格式时,模型检测报错 "NoClassDefFoundError"

根本原因: 当 Kyligence Enterprise 从存储为 Parquet 或 ORC 存储格式的 Hive 表中读取数据时,需要 kryo-shaded 和 hive-exec 的 JAR文件。

解决方案:

创建一个目录来存储执行作业所需的所有 JAR 文件,如:mkdir $KYLIN_HOME/mrlibdir

将相关的 JAR 文件复制到创建的目录中。

如果报错信息是 "java.lang.NoClassDefFoundError: com/esotericsoftware/shaded/org/objenesis/strategy/InstantiatorStrategy", 在环境中找到 hive-exec-1.1.0-cdh{version}.jar 这个 JAR 文件并拷贝到 $KYLIN_HOME/mrlibdir 目录下。

如果报错信息是 "java.lang.NoClassDefFoundError: com/esotericsoftware/kryo/Serializer",下载 kryo-2.21-shaded.jar 并拷贝到 $KYLIN_HOME/mrlibdir 目录下。

在 kylin.properties 中增加配置项 kylin.engine.mr.lib-dir={用于存放 JAR 文件的目录},如:kylin.engine.mr.lib-dir=$KYLIN_HOME/mrlibdir,该参数对应值必须是绝对路径

重启 Kyligence Enterprise 使得配置生效并且重新提交模型检测任务。

关键信息:

java.lang.NoClassDefFoundError: com/esotericsoftware/kryo/Serializer    at org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat.getRecordReader(MapredParquetInputFormat.java:62)    at org.apache.hive.hcatalog.mapreduce.HCatRecordReader.createBaseRecordReader(HCatRecordReader.java:116) ...
 Caused by: java.lang.ClassNotFoundException: com.esotericsoftware.kryo.Serializer
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  org.apache.kylin.job.exception.ExecuteException: java.lang.NoClassDefFoundError: com/esotericsoftware/shaded/org/objenesis/strategy/InstantiatorStrategy
     at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:141)
     at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:67)     ...
Caused by: java.lang.NoClassDefFoundError: com/esotericsoftware/shaded/org/objenesis/strategy/InstantiatorStrategy
     at org.apache.hadoop.hive.ql.exec.Utilities.(Utilities.java:1088)
     at org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat.getRecordReader(MapredParquetInputFormat.java:62)
     ...
 Caused by: java.lang.ClassNotFoundException: com.esotericsoftware.shaded.org.objenesis.strategy.InstantiatorStrategy
     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

问题5

如何单独为 Build Base Cuboid 步骤设置 MapReduce 参数

如若一个Cube中包含超高基数的去重指标,那么在 Cube 构建的 Build Base Cuboid 步骤,需要配置相对大的 MapReduce 内存。但是其他构建步骤并不需要一样的配置资源。在 Kyligence Enterprise 3.2.2.2026 之后,为了避免其他步骤由于配置较高 MapReduce 内存导致的资源浪费,可以为 Build Base Cuboid 步骤单独配置 MapReduce 参数,从而提高 YARN 资源利用率。

配置方法:如下参数可以在 $KYLIN_HOME/conf/kylin.properties 中配置使之全局生效,同时您可以将如下参数在 Project 级别或者 Cube 级别配置使之生效

kylin.engine.mr.base-cuboid-config-override.mapreduce.map.memory.mb=8192
kylin.engine.mr.base-cuboid-config-override.mapreduce.map.java.opts=-Xmx7373m -XX:MaxDirectMemorySize=256M
kylin.engine.mr.base-cuboid-config-override.mapreduce.reduce.memory.mb=32768
kylin.engine.mr.base-cuboid-config-override.mapreduce.reduce.java.opts=-Xmx29491m -XX:MaxDirectMemorySize=1638M

注:上述参数具体配置大小请根据实际情况进行调整在 $KYLIN_HOME/conf/kylin.properties 中配置,需要重启 Kyligence Enterprise 使之生效,Project 级别或者 Cube 级别配置即可实时生效。

问题5

kyligence Enterprise 进程在没有任何明显报错信息的情况下被终止

问题描述:Kyligence Enterprise 进程被突然终止,kylin.log 日志中没有报任何明显的错误信息

根本原因:在 Linux 操作系统中的 /var/log/messages 中,Kyligence Enterprise 进程显示被 oom-killer 杀死,这表示 Kyligence Enterprise 进程占用了太多内存而被 Linux 操作系统的 OOM Killer 杀死

解决方案:在更强大的 Linux 机器上运行 Kyligence Enterprise,一般的推荐内存配置在 64GB 或更高

Nov 22 15:44:46 VL-Dev-11583 kernel: [1977206.788834] java invoked oom-killer: gfp_mask=0x201da, order=0, oom_adj=0, oom_score_adj=0
Nov 22 15:44:47 VL-Dev-11583 kernel: [1977206.788840] java cpuset=/ mems_allowed=0-7
Nov 22 15:44:47 VL-Dev-11583 kernel: [1977206.788843] Pid: 21587, comm: java Tainted: G

问题6

执行 CLI 命令时报错内存溢出

问题描述:执行垃圾清理、元数据检查等 CLI 命令时,可能会报错。

根本原因:当 $KYLIN_HOME/bin/ 目录下不存在 setenv-tool.sh 文件时,在执行垃圾清理,元数据检查等 CLI 命令时会默认读取 $KYLIN_HOME/conf/setenv.sh 中的 KYLIN_JVM_SETTINGS 配置,若机器剩余内存无法启用一个相同内存的 JVM ,CLI 命令会报错。

解决方案:在 $KYLIN_HOME/bin/ 目录下新建 setenv-tool.sh 文件并写入如下内容(其中大小可根据需要配置):

#!/bin/bash
export KYLIN_EXTRA_START_OPTS="-XX:+UseG1GC -Xms2g -Xmx2g"

关键信息:java.lang.OutOfMemoryError: Java heap space

kylin使用时候出现的问题及处理方式(一)相关推荐

  1. kylin KV+cube方案分析

    2019独角兽企业重金招聘Python工程师标准>>> 前言   在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度以及一些附加信息,然后对cube进行 ...

  2. kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Mybatis项目中的整合,shell脚本执行kylin restapi 案例

    关于本篇文章的说明: 本篇文章为笔者辛苦劳作用了一整天总结出来的文档,大家阅读转发的时候请不要吝啬写上笔者:涂作权 和 原文地址. 由于笔者所在环境没有人用过kylin,笔者也是自学官网,阅读书籍 将 ...

  3. kylin如何支持flink_Kylin 在腾讯的平台化及 Flink 引擎实践

    △Meetup 现场视频 Kylin 平台化实践 首先,介绍下我们为什么进行平台化改造? 我们部门为公司内其他业务线提供了各种大数据平台,如 Kylin.HBase.Spark.Flink 等等,提供 ...

  4. Kylin、Druid、ClickHouse核心技术对比

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取个gui 来源:jackywoo.cn 导读:Kylin.Druid.Cli ...

  5. Apache Kylin VS Apache Doris

    作者: 康凯森 日期: 2018-04-17 分类: OLAP 1 系统架构 1.1 What is Kylin 1.2 What is Doris 2 数据模型 2.1 Kylin的聚合模型 2.2 ...

  6. kylin build过程详解

    目录 1. 计算cuboid文件 1.1 生成原始数据(Create Intermediate Flat Hive Table) 1.2 创建事实表distinct column文件(Extract ...

  7. Apache Kylin的安装和使用

    官网    |     GitHub    |     文档    |     下载 目录 1 概览 1.1 Kylin是什么 1.2 Kylin的特性 1.3 使用 Apache Kylin 的典型 ...

  8. kylin调优,项目中错误总结,知识点总结,kylin jdbc driver + 数据库连接池druid + Myba

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

  9. 【读书笔记】数据仓库- Apache Kylin权威指南

    Apache Kylin权威指南(第2版) ◆ 1.2.1 为什么要使用Apache Kylin 它们的主要技术是"大规模并行处理"(Massively Parallel Proc ...

最新文章

  1. IDEA配置NodeJS项目遇到问题及解决
  2. ubuntu 安装 python3.6.8
  3. QA测试工程师思维导图
  4. 北大AI公开课2019 | 雷鸣:人工智能革命与机遇
  5. 1.3 机器学习基础-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  6. JAVA基础学习日记-----持续更新
  7. [css] 为什么说css中能用子代选择器的时候不要用后代选择器?
  8. 四大招让无处不在的工作空间成为可能?揭秘Ivanti 的战略布局
  9. 在python中用递归的方法编程_python基础之函数,递归,内置函数
  10. python中if嵌套语句_python_if判断_三_if的嵌套
  11. Java Applet 问题汇总
  12. paip.提升用户体验------c++ Qt5 实现程序图标以及动态托盘闪烁图标
  13. NEMA-0183(GPGGA,GPRMC,GPGSA,GPGSV,GPVTG)详解
  14. 正态性检验方法——K-S检验和S-W检验
  15. numpy tolist()的用法
  16. 开发一个简单的Mac应用
  17. 提高个人效率的方法和工具
  18. 将爬取的实习僧网站数据传入HDFS
  19. C#中向Chart中添加数据
  20. 怎样可以在线将pdf转换成jpg格式

热门文章

  1. Asp.Net photoshop 源文件psd 图片 转换格式成jpg、png、gif
  2. 类和对象——初入江湖
  3. 算法3-加减号得数方法数
  4. 隐含对象是什么意思?有哪些隐含对象?
  5. QQ音乐 for Mac(腾讯音乐客户端)
  6. 华为桌面云客户端“CloudClient” AccessClient_Win.msi Fussion Access
  7. 强化学习笔记(七):蒙特卡洛树搜索(MonteCarlo Tree Search)
  8. BIOS-CXL CxlIpLib 源码解析
  9. android鼠标等待时间,从提示盒视频游戏播放时间,修复计算机鼠标和最简单的Android计时器 | MOS86...
  10. 人机工程学座椅设计_人体工程学椅子设计要点 如何设计舒适椅子