Kylin是个强大的数据处理平台,由于最近工作需要无意间看到了Kylin和Druid两个平台的优劣比较,之前也有过Kylin耳闻所以想尝试一把,没想到过程中所到之处全是坑,不过一路下来也积累了不少解决问题的思路,下面分享给大家。
首先推荐下Kylin团队的问题答疑网站,上面已经有前人趟过的许多坑的历史信息,如果过程中遇到问题可以先在这个平台自行搜索。
官网:http://kylin.apache.org/cn/
wiki:http://apache-kylin.74782.x6.nabble.com/
环境:
kylin-2.5.2-bin-hadoop3
mac-os 10.14.2
hadoop 3.3.1
hive 3.3.1
hbase 1.4.9
zookeeper 3.4.12
kafka 2.0.0
mac 环境官方不是很推荐,所以出趟坑很大部分原因也是如此
1.HBase的版本对于Kylin非常重要,试过1.2.9和2.0.0版本都失败了,最终选择了stable的1.4.9解决了kylin_metastore@hbase的问题,并且官方说hbase1.x使用kylin-hbase1.x的版本是有问题的,在wiki和kylin-team沟通后改用kylin-2.5.2-bin-hadoop3的版本。
2.hive使用metastore方式,必须单独启动hive –service metastore & 否则kylin无法链接和从hive同步数据。
3.如果出现关于zookeeper connection的问题,一般是hbase的zookeeper配置有问题,请检查hbase-site.xml。
4.如果出现zookeeper非connection问题,并且看起来想jar包冲突的L,value的异常,那么我处理的方式是将 hive_home/lib hbase_home/lib kylin_home/spark/jar 下面的zookeeper.jar保持相同版本,我使用的zookeeper-3.4.12.jar和zookeeper保持相同。
5.kylin的sample.sh 脚本shell部分mac支持有问题,之前在其他帖子有看到解决是需要安装其他包,有兴趣的朋友可以自行Google,如果在执行sample.sh后不能展示cube,并且可以看到JSON解析问题,那么是这个shell导致的,解决方法可以直接去修改apache-kylin-2.5.2-bin-hadoop3/sample_cube/metadata/cube_desc/目录下的cube JSON文件,将version->”2.5.2″ engine_type->2 (使用hadoop作为engin) storage_type->2 (使用hbase存储)
6.当已经build cube 但是cube一直处于pending 状态,并且在hadoop并未发现job提交,那么在提交过程中有问题,我这里出Curator 的creatingParentsIfNeeded 方法不存在,这个问题查来很久没有遇到合适的解决方案,最终在一个curator的使用文档中看到官方kylin_home/spark/jars中的curator版本是2.x,此版本没有这个方法,下载4.0.0的版并且替换到kylin_home/spark/jars hive_home/lib hbase_home/lib目录,再次启动,cubeJob状态变成Running。
7.Kylin构建cube的时候默认使用hadoop计算引擎,如果想使用spark构建,请修改cube配置引擎,并参考官网http://kylin.apache.org/cn/docs/tutorial/cube_spark.html的文档。但是配置完成后构建报出了与hbase方法缺失的错误,一番查找后将hbase下lib中hbase-*.jar的包考到spark/jars目录中解决了此问题,猜测spark中并未提供hbase相关的包,kylin构建完成会存入hbase调用方法时jar包方法缺失。
总结,kylin的服务对jar包的问题解决不是很好,冲突和版本方法不在的情况很常见,所以大家在搭建服务的时候需要有足够的耐心和寻找问题的能力。
暂时服务搭建走到了build cube这一步,大概已经用时6天左右,可能还是修行不够,后面持续遇到的问题会持续更新这个文集,如果大家有交流的欢迎来评论,也可以留下自己曾经趟过的坑以示后人。