Apache Kylin 是什么
一个采用多维立方体预计算技术的 OLAP
引擎框架,简单来说就是做大数据查询的。
Apache Kylin
的工作原理本质上是 MOLAP
(Multidimensional Online Analytical Processing)Cube,也就是多维立方体分析。
Kylin 安装环境要求
- KYLIN_HOME
- HADOOP_CONF_DIR
- HBase Client
- Hive Client
- Zookeeper Client
- Spark Client
安装之前需要确认节点上的环境是否满足要求,可以使用 bin/check-env.sh
来确认是否满足环境要求
kylin.properties,初始配置修改
因为 Kylin 很多默认配置都在根目录下,这里先改几个默认配置
1 | Kylin 在 HDFS 上的工作目录,默认是 /kylin |
满足环境要求之后直接启动就 OK,成功启动的界面如下。
1 | [root@master apache-kylin-2.5.2-bin-hbase1x]# bin/kylin.sh start |
看到 Web UI is at http://<hostname>:7070/kylin
即表示服务已经启动,直接前往浏览器打开登录界面,账号 ADMIN,默认密码 KYLIN。如果浏览器打不开,排查启动日志 $KYLIN_HOME/logs/kylin.log,查看具体错误原因。
例如,启动报错:
1 | Invocation of init method failed; nested exception is java.lang.IllegalStateException: Cannot start job scheduler due to lack of job lock |
既然是 lack of job ,查看 HBase Zookeeper 的元数据信息,极大可能是元数据信息冲突了,在没做集群的情况下换节点启动服务容易出现这个错误,因为默认的元数据信息都在 HBase Zookeeper 的默认nameSpace 或 根目录下。
其他
如果修改了部分 Kylin 配置,最好进行重启,否则有些配置在 Kylin 的 System 页面重新加载不一定生效。
1 | bin/kylin.sh stop |
在重启后需要在 System 页面 重新加载配置和元数据信息。
样例 Cube
1 | KYLIN_HOME/bin/sample.sh |
特性
SQL 接口
标准查询 SQL 支持
支持海量数据集,增量更新
不会随着数据量的增长导致查询时间线性增长,查询时间只跟维度的个数和基数
亚秒级响应
因为预计算,所以查询时间就是一个查询结果的时间
水平扩展
扩展查询性能,预计算性能扩展需要根据底层计算引擎分别扩展
可视化集成
提供了 ODBC/JDBC 接口和 RESTful API ,方便集成
计算引擎可插拔
目前主要的两个引擎是 MR 和 Spark
存储后端可插拔
目前主要是 基于HBase 的查询后端,也可以基于 Druid 等。
缺点
不支持随机和明细查询
因为预计算的都是多维度的聚合结果,因为随机和明细的查询是不支持的
只支持星型模型
雪花模型和星座模型可以转为星型模型
空间换时间
因为预计算的原因,结果数据会因为维度和度量的个数和基数而直线膨胀
数据结构发生变化需要重新 build cube
因为预计算的原因,导致历史结果数据无法更新只能重写覆盖
Kylin 将hive client的计算引擎换成 SparkSQL
正常来说,Hive 默认的任务引擎是 MR,如果需要将 MR 改成 SparkSQL 时,对配置进行一些改变
1 | 打开 spark-sql |
关于队列设置
(1)默认配置文件,通过配置文件($KYLIN_HOME/conf/kylin_job_conf.xml)设置队列:
1 | <property> |
Hive配置使用单独的配置文件kylin_hive_conf.xml,kylin_hive_conf.xml是kylin提交任务到hive的配置文件
(2)cube级别重载
如果某一个任务想要单独配置队列(例如放在一个较大的队列加快Build速度),可以通过Cube的属性重载默认的配置:
1 | <property> |
如果想要重载hive队列:
1 | <property> |
Kylin 增加 Spark 任务引擎
因为目前spark集群时独立于 hdp 之外的 standalone 模式,所以相关 yarn的配置无所谓 。
进行配置修改:
1 | 指定 hadoop_conf_dir |