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 |
【原因】
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}
|
【原因】
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
|
【原因】
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名