Apache Kylin(包括孪生产品Kyligence)是由国人主导的开源大数据OLAP引擎。这是一款优点和缺点都很明显的产品。
简史
- 2013年中,ebay中国开启了一个OLAP-on-Hadoop项目,用以解决BI-on-Hadoop的性能问题。
- 2014年9月,正式命名为kylin并在ebay内部上线
- 2014年10月1号,kylin发布到github,正式开源
- 2014年11月,加入apache基金会的孵化项目
- 2015年11月,孵化项目毕业,成为apache顶级项目
- 2016年3月,kylin的核心成员成立kyligence,提供商业化服务
架构
Kylin的整体架构比较简单易懂,几句话就能描述清楚。
- 数据源(Hive,CSV文件,kafka,RDBMS)
- HBase作为预计算Cube的存储中心
- Kylin提供模型定义接口,接受SQL等信息
- Kylin根据模型定义,从数据源读取数据,预计算,保存结果到HBase
- Kylin提供查询接口,直接中Hbase读取预计算好的结果
kyligence引入了clickhouse,可以提供大宽表现场查询、明细查询等功能。
优点
以空间换时间,无论多么复杂的查询,只要命中预计算的结果,可以亚秒级返回。
缺点
- 空间耗费较大。这是预计算的必然结果,可以说是kylin的基因。特别是当有过多维度和维度组合时。
- 如果维度基数较高,可能导致OOM。维度基数指的是维度不同值的个数。虽然可以通过调整参数解决OOM的问题,但也说明kylin在这种情况下内存耗费严重。
- 无明细数据(kyligence引入clickhouse,可以部分解决)
- 没有命中预计算的SQL查询较慢(kyligence引入clickhouse,可以部分解决)
- 没有命中的情况,包括查询模型范围外的分区、维度、指标
选型建议
适合离线计算、聚合计算、存储空间充裕、查询灵活度要求不高的场景。例如周期报表。这几个适应条件是“与”的关系。
如果想要实时计算,或明细查询,或存储空间相对受限,或对查询灵活度要求较高,则应当选择其他查询引擎。