Apache Kylin 安装使用问题
博客专区 > AlexPeng 的博客 > 博客详情
Apache Kylin 安装使用问题
AlexPeng 发表于3个月前
Apache Kylin 安装使用问题
  • 发表于 3个月前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: 由于公司技术选型,针对百亿级别数据做秒级查询,选kylin做了个测试,这里记录下中间遇到的问题。

环境:

hbase 单独集群版本:1.0.0-cdh5.5.1 , 对应的hadoop版本:2.6.0-cdh5.5.1

hadoop 版本: 2.6.0-cdh5.9.0

hive 版本:1.1.0-cdh5.9.0

hcatlog 版本: 1.1.0+cdh5.9.0

kylin 版本: apache-kylin-2.0.0-bin-cdh57.tar.gz

 

1.  启动不了

    在kylin.out中看到 hadoop.tmp.dir 这个目录没有权限,导致启动不了, 原因是我之前用的root 用户启动一次kylin,后来切换用户导致的,赋权限就好。

 

2. hbase单独集群配置(最严重的一个问题)

    kylin中 kylin.storage.hbase.cluster-fs 这个配置未配置,虽然可以运行kylin,但是是个天坑,将公司80台hbase单独服务集群弄挂了,这里的原因没有细究,需要去问问kylin的大神。(推测可能是hbase客户端配置直接用zk的配置的,在请求的时候一台一台hbase机器地址获取写入数据,因为数据量比较大导致单台机器承受不住,最终一台一台机器弄挂)

    配置上面的参数,就必须要配置hbase的 kylin.storage.hbase.cluster-hdfs-config-file这个属性,指定hbase集群中hdfs的配置文件。

 

3.  hbase 版本问题

    由于官网提供的编译完成的二进制对应的版本有限,遇到的问题: 

    https://www.oschina.net/question/144320_2263656

    最终解决方法,请自行去官网下载2.0版本源码,根据自己的hbase版本编译打包。

    这个问题一般在查询阶段才会遇到。

 

4. cube第一步报错,内容如下:

java.lang.NullPointerException
	at org.apache.kylin.source.hive.CreateFlatHiveTableStep.getCubeSpecificConfig(CreateFlatHiveTableStep.java:100)
	at org.apache.kylin.source.hive.CreateFlatHiveTableStep.doWork(CreateFlatHiveTableStep.java:105)
	at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:113)
	at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:57)
	at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:113)
	at org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:136)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

    网上说是 metadata 数据加载失败, 可以去在系统中reload metadata下就好。

    但中间遇到过好几次这样的问题,有时可以解决,有时候很顽皮, 具体原因不清楚。

    使用中发现,cube对应的model中的事实表,也即从hive 数据源中导入到kylin中的需要计算的表在完成Sync操作后,会发出一个job任务(做什么暂时不清楚,猜测是抽取表对应的文件),当这个任务执行不成功时第一步也会遇到这个问题。请确保该任务执行成功。

 

5. 执行计算的时候发生MR倾斜

    第一是字段维度设计有问题,请自行检查

    第二就是重新手动按自己的方式对kylin计算的hive中间表做数据切分,关闭自动文件合并的功能。

set mapreduce.job.reduces=500;

set hive.merge.mapredfiles=false;

INSERT OVERWRITE TABLE kylin_intermediate_track_view_cube_1ae062d7_1490_4ece_a1b8_2c3358f5fdd9 SELECT * FROM kylin_intermediate_track_view_cube_1ae062d7_1490_4ece_a1b8_2c3358f5fdd9 DISTRIBUTE BY RAND();

    设置reduce的计算个数,及重新切分表中的文件!上面的参数在cube执行中会打印出来, 后续自行copy按照表的数据量和集群资源,自行切分并安排合理的reduce的个数。

 

6. 权限问题

    如果你是单独hbase集群请保证运行的用户,在两边hdfs上对应目录的权限相同,且可自行赋权,我这边遇到的问题是,hbase集群hdfs上的目录是/user/kylin目录,kylin用户对当前目录是可以操作的,但当赋权操作时失败,问题是/user目录是root用户且是700权限,导致下面/user/kylin目录下面的文件当前用户不能自己赋权, 修改/user目录的权限为755 解决当前用户不能自行赋权的问题。

    

使用总结:

    1. 不支持原始数据明细查询

    2. 单维度数据21亿限制

    3. 查询限制于cube的设计,不是太灵活。

    4. 查询分组等计算的速度很快,大部分在1秒内。

    5. 分区时间字段格式支持有限。

    6. cube计算维度的膨胀,需要对业务精确分析,对维度组合进行剪枝。

    7. 跨segment的查询会比较慢。

    

参考: 

http://www.guardian.cool/2016/11/HBase%E7%8B%AC%E7%AB%8B%E9%9B%86%E7%BE%A4%E7%9A%84Kylin%E6%90%AD%E5%BB%BA%E9%97%AE%E9%A2%98%E8%AE%B0%E5%BD%95/

   

    

    

 

 

 

 

共有 人打赏支持
粉丝 14
博文 22
码字总数 12131
×
AlexPeng
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: