1.简介
Apache Kylin(麒麟)是由eBay开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。底层存储用的是HBase,数据输入与cube building用的是Hive,中间数据存储用的是HDFS。搭建环境:
2.依赖组件
Kylin version = 1.2
Hive version = 0.13.1
HBase version = 0.98.
Hadoop version = 2.4.0
3.依赖服务
hadoop2的hdfs yarn 以及 jobhistory
hive –service metastore &
zookeeper
hbase
kylin
4.安装部署(本教程为hadoop伪分布式)
- hadoop2.4部署
- hive0.13部署
- hbase0.98部署
- kylin1.2部署
5.部署过程中的坑和填坑方案
kylin依赖snappy压缩算法,所以hadoop和hbase都需要添加snappy的功能
- apathe官网上的hadooplib下的so包都为32位,所以需要下载src源码进行手动编译,将target下的native的so包替换(这里千万不要偷懒,必须自己编译,下载网上编译好的so包没有效果)。hadoop编译时使用mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-common -Drequire.snappy
- hbase部署snappy较为简单,但是坑也不少,给大家一个比较靠谱的链接,大家可以参考:http://www.aboutyun.com/thread-6198-1-1.html
- 以上工作ok后可以先验证下hadoop是否支持snappy,命令为:hadoop checknative -a,hadoop的验证方式可以创建压缩方式为snappy的表,如果不报错就ok了,命令为:create ‘tsnappy’, { NAME => ‘f’, COMPRESSION => ‘snappy’}
kylin版本依赖太强
按照kylin官网给出的建议,希望大家也遵照这样的建议,要不就会像我一样一遍一遍的部署不同版本的hadoop、hive、hbase,想想如果搞到中间真的是因为版本问题,会很打击积极性的
Hadoop: 2.4 - 2.7
Hive: 0.13 - 0.14
HBase: 0.98 - 0.99
JDK: 1.7+之前我的做法是hadoop2.2.0,但是结果真的令人悲催。首先是kylin依赖Hautil,2.2里根本就没有这个类的定义,你也别想把2.4的拷贝过来,比如用2.4的版本,而且需要重新编译
kylin1.2初体验
1.启动kylin成功后,就可以ADMIN/KYLIN登陆了
2.然后可以尝试用kylin自带的demo创建一个cube(运行sample.sh,是加载data下csv文件到hive)
3.在构建cube的时候问题就更多了,比较大的几个问题
4.内存一定要给够,官网上说是5g,我的是虚机,刚开始给的2g,心想只是运行的demo应该够了吧,free看了下cube创建过程中内存占用,hbase的zookeeper和hadoop的namemanager进程直接挂掉,内存秒级别被吃满。果断加到4g,勉强够用。
5.创建cube过程中,会有各种各样的问题bug,建议大家直接翻墙google吧,国外其实用的也不是很多,只能靠毅力慢慢找到解决方案了。
后续todo
- 必须好好读下kylin的官方文档,做更深入的了解
- 可以读下kylin的源代码,熟悉数据流转的方式
- 最重要的就是要知晓kylin对于数据的优化方式