原文地址:http://lxw1234.com/archives/2016/04/643.htm
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
kylin
Kylin OLAP引擎基础框架,包括元数据(Metadata)引擎,查询引擎,Job引擎及存储引擎等,同时包括REST服务器以响应客户端请求;
支持额外功能和特性的插件;
与调度系统,ETL,监控等生命周期管理系统的整合;
在Kylin核心之上扩展的第三方用户界面;
官网地址:http://kylin.apache.org/
提供了主要功能及使用的中文文档。
Kylin的架构特性
可扩展的超快OLAP引擎,提供标准SQL查询接口
支持单机或集群部署,为减少在Hadoop上百亿规模数据查询延迟而设计;
提供标准SQL接口,满足Hadoop之上的大部分分析查询需求。
交互式查询能力,多维立方体(MOLAP Cube)
用户能够在Kylin里为百亿以上数据集定义数据模型并构建立方体。
与BI工具及其他应用整合
提供JDBC及ODBC驱动,与BI工具整合。
其他特性
压缩与编码;
增量更新;
利用HBase Coprocessor;
基于HyperLogLog的Dinstinc Count近似算法;
友好的web界面以管理,监控和使用立方体;
项目及立方体级别的访问控制安全;
支持LDAP;
Kylin的安装部署
下载地址:http://kylin.apache.org/download/
apache-kylin-1.5.1-bin.tar.gz
解压至:/home/liuxiaowen/kylin
安装部署环境
我这里使用的相关版本为:
hbase-0.98.6-cdh5.2.0
hadoop-2.3.0-cdh5.0.0
apache-hive-2.0.0-bin
apache-kylin-1.5.1-bin
jdk1.7+
特别注意:Hive应该使用至少0.14以上的版本,我第一次使用0.13.1时候有问题。
另外,请确保Hadoop、HBase、Hive可用,这里不介绍。
配置环境变量
部署使用的用户为liuxiaowen
vi ~/.bash_profile
HBASE
export HBASE_HOME=/opt/hbase-0.98.6-cdh5.2.0
export HBASE_CONF_DIR=/etc/hbase/conf
HADOOP
export HADOOP_HOME=/opt/hadoop-2.3.0-cdh5.0.0
export HADOOP_CONF_DIR=/etc/hadoop/conf
export YARN_CONF_DIR=/etc/hadoop/conf
HIVE
export HIVE_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin
export HCAT_HOME=HIVEHOME/hcatalogexportHIVECONF=HIVE_HOME/conf
KYLIN
export KYLIN_HOME=/home/liuxiaowen/kylin/apache-kylin-1.5.1-bin
刷新环境变量:
source ~/.bash_profile
配置Kylin使用的Hive数据库:
cd $KYLIN_HOME/conf
vi kylin.properties
Hive database name for putting the intermediate flat tables
这里配置在Hive中使用的schema,需要写权限
kylin.job.hive.database.for.intermediatetable=liuxiaowen
使用HDFS超级用户在HDFS上为Kylin创建工作目录,并赋权给liuxiaowen:
hadoop fs -mkdir /kylin
hadoop fs -chown -R liuxiaowen:liuxiaowen /kylin
可选,配置Kylin使用的内存
$KYLIN_HOME/bin/setenv.sh
检查环境配置
cd $KYLIN_HOME/bin
./check-env.sh
kylin
启动Kylin
cd $KYLIN_HOME/bin
./kylin.sh start
kylin
登陆Kylin WEB界面
浏览器输入:
http://172.16.212.17:7070/kylin
用户名密码:ADMIN/KYLIN
kylin
遇到的几个问题
都是因为使用了Hive0.13.1引起的:
Caused by: java.lang.IncompatibleClassChangeError:
Found interface org.apache.hadoop.mapreduce.JobContext, but class was expected
hcatalog版本问题,后改为Hive2.0中的hcatalog
export HCAT_HOME=/home/liuxiaowen/apache-hive-2.0.0-bin/hcatalog
java.lang.NoClassDefFoundError: org/apache/hadoop/hive/shims/Utils
Kylin的简单示例
Kylin中多维分析Cube的建立主要包括以下步骤:
Hive中分析好事实表;
Kylin中建立项目(project);
Kylin中建立数据源;
Kylin中建立数据模型;
Kylin中建立Cube;
Build Cube;
查询Cube;
Kylin按照上面的过程,最终将Hive中的事实表按照相应的结构,压缩并存储在HBase中。
官网提供了中文文档,说明了如何在Kylin中建立Cube,非常详细:
http://kylin.apache.org/cn/docs15/tutorial/create_cube.html
Hive中的事实表
kylin
事实表lxw1234_kylin_fact中的维度有day、region、city、siteid、os;最终查询的指标有两个:PV以及UV(COUNT DISTINCT cookieid)
Kylin中建立数据模型
建立项目lxw1234;
将Hive中的事实表 lxw1234_kylin_fact导入到Kylin数据源:
kylin3. 建立数据模型lxw1234_dataModel:
选择维度数据:
kylin
选择指标数据:
kylin
其他设置:
kylin
数据模型中的日期分区字段貌似是必选的,否则会有问题。
然后保存。
kylin
Kylin中建立Cube
kylin
设计维度:
kylin
设计指标:
kylin
其中,UV使用的COUNT_DISTINCT是近似计算,需要选择错误率,错误率越低,占用的存储越大,Build耗时越长。
其他设置请参考上面给的中文文档链接,很详细。
设置好之后保存。
kylin
Kylin中Build Cube
在Cube后面的Actions下拉菜单中选择Build:
kylin
Submit之后,在Monitor页面中可以看到Build Job的进度和状态:
kylin
双击Job Name进入该Job的详细监控页:
kylin
Build完成后,在Model页面可以看到这个Cube已经是READY状态:
kylin
你可以在HBase中查看该Cube对应的HTable:
kylin
Kylin中使用SQL查询
在Insight页面中使用SQL查询:
kylin
注意:由于DAY是关键字,需要使用双引号。
至此,Kylin的安装配置及简单示例已经全部完毕,后续将介绍进一步的使用,比如和BI工具的整合等等