Apache Kylin踩坑记

1.Apache Kylin简介

Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。

这款软件目前广泛用于ebay、思科、雅虎、三星、百度、京东、网易、腾讯等大厂。

其核心能力在于通过预先计算维表、事实表的各种组合结果并存储于HBase,使得数据仓库的多维查询SQL执行时间从几分钟甚至几小时缩短到几秒甚至几十毫秒,用空间换取时间。

2.安装

前提条件:已安装CDH集群。

选择其中一台DataNode,执行以下命令(以Kylin 2.6.3 For CDH 6.0 版本为例)。

# 下载、解压到任意目录

wget https://archive.apache.org/dist/kylin/apache-kylin-2.6.3/apache-kylin-2.6.3-bin-cdh60.tar.gz

tar -zxvf apache-kylin-2.6.3-bin-cdh60.tar.gz

# 切换root

su

# 预备将kylin目录设定为/opt/kylin,因此确保常用用户可访问

chown yourUser /opt

# 切回普通用户

exit

# 建立软连接(假设解压到用户home目录)

ln -s /home/yourUser/apache-kylin-2.6.3-bin-cdh60 /opt/kylin

# 切root并修改环境变量

su

vi /etc/profile.d/myenv.sh

  export KYLIN_HOME=/opt/kylin

  export CDH_HOME=/opt/cloudera/parcels/CDH

  export SPARK_HOME=${CDH_HOME}/lib/spark

  export HBASE_HOME=${CDH_HOME}/lib/hbase

  export HIVE_HOME=${CDH_HOME}/lib/hive

  export HADOOP_HOME=${CDH_HOME}/lib/hadoop

  export PATH=$JAVA_HOME/bin:$KYLIN_HOME/bin:$PATH

# 切回普通用户

exit

source /etc/profile.d/myenv.sh

# 环境检查

cd $KYLIN_HOME/bin

./check-env.sh

# 切root,HDFS权限分配

su

sudo -u hdfs hdfs dfs -mkdir /kylin

sudo -u hdfs hdfs dfs -chown yourUser /kylin

exit

# 尝试启动kylin服务

cd $KYLIN_HOME/bin

./kylin.sh start

  

# 监控日志

tailf /opt/kylin/logs/kylin.log

后续的创建model、cube等通过web ui操作即可,具体方法参考官网:

http://kylin.apache.org/cn/docs/tutorial/create_cube.html

3.异常处理

3.1 Kylin启动命令异常“hbase-common lib not found”

【原因】

疑似HBase版本与Kylin版本兼容问题。Kylin启动时通过"hbase classpath"命令尝试获取hbase-common库的路径,而hbase并不一定返回hbase-common库的路径。

【对策】

vi find-hbase-dependency.sh
手工添加 $HBASE_HOME/lib/hbase-common-2.1.0-cdh6.3.0.jar 作为 hbase-common 的路径

3.2 Kylin日志提示文件无法创建

【原因】

疑似bug

【对策】

手工创建缺失的目录:

mkdir -p /opt/kylin/tomcat/conf/

3.3 Kylin日志提示java.io.FileNotFoundException derbyLocale_zh_TW.jar

【原因】

疑似兼容性问题

【对策】

不影响运行,可无视

3.4 Kylin日志提示java.lang.NoClassDefFoundError: org/apache/commons/configuration/ConfigurationException

【原因】

kylin服务依赖于1.x版的common-configuration库,而CDH6安装后只有2.x版的common-configuration2库,不兼容

【对策】

手工下载1.x版库

wget https://repo1.maven.org/maven2/commons-configuration/commons-configuration/1.10/commons-configuration-1.10-bin.tar.gz

tar -zxvf commons-configuration-1.10-bin.tar.gz

cp commons-configuration-1.10/commons-configuration-1.10.jar $KYLIN_HOME/tomcat/lib/

cd $KYLIN_HOME/bin

./kylin.sh stop

./kylin.sh start

3.5 Kylin日志提示java.lang.NoSuchMethodError: org.apache.hadoop.hive.metastore.HiveMetaStoreClient.(Lorg/apache/hadoop/conf/Configuration;)

【原因】

Kylin版本与CDH版本有冲突,比如apache-kylin-2.6.3-bin-hadoop3运行于CDH6.0会出现此异常
【对策】
使用apache-kylin-2.6.3-bin-cdh60版本,没有此问题

3.6 kylin-jdbc抛异常SQLFeatureNotSupportedException

【原因】
说明calcite.avatica版本过老,存在部分JDBC API不支持的情况

【对策】

clone源码,修改avatica版本为1.12.0,发布到公司maven仓库

比如:

    mycompany-kylin-jdbc

    jar

    Apache Kylin - JDBC Driver

    Kylin JDBC Driver on Calcite Avatica Modified by mycompany

    2.6.3-SNAPSHOT

 

    

        org.apache.kylin

        mycompany-kylin

        2.6.3-SNAPSHOT

    

...

    

        ...

        1.12.0

    

...

        

            org.apache.calcite.avatica

            avatica-core

            true

            ${avativa-version}

        

3.7 kylin-jdbc源码编译异常,缺少jdk.tools-1.8.jar

【原因】

Kylin依赖于JDK的tools.jar

【对策】1)下策

用maven install命令将JDK中的tools.jar安装到本地maven仓库
mvn install:install-file -Dfile=/my_jdk_path/jdk1.8.xxx/lib/tools.jar -DgroupId=jdk.tools -DartifactId=jdk.tools -Dversion=1.8 -Dpackaging=jar

2)上策

添加maven依赖

    jdk.tools

    jdk.tools

    1.8

    system

    ${JAVA_HOME}/lib/tools.jar

 

3.8 单独构建kylin-jdbc源码时出现异常Unable to find: dev-support/checkstyle-apache-header.txt

【原因】

Kylin构建过程依赖于顶层目录结构

【对策】

1)从顶层的pom开始构建
2)删除顶层pom的parent(org.apache)防止访问apache官方maven库
3)删除modules中不需要的模块
4)指定distributionManagement发布到公司maven仓库

3.9 通过JDBC连接Kylin服务器时抛异常Cannot find project xxx

【原因】

Kylin的project名通过JDBC URL的DB名指定,例如

spring.datasource.url=jdbc:kylin://my-kylin.com/myproject

【对策】

指定正确的project名

你可能感兴趣的:(大数据)