Apache Kylin的使用感受

Apache Kylin是一款由国人主导的开源大数据OLAP引擎,适用于离线计算和聚合查询。其通过预计算实现亚秒级查询响应,但空间占用大,不支持明细数据和高维度查询。Kyligence作为其孪生产品,引入了Clickhouse以增强实时查询和明细查询能力。选型时要考虑存储空间、查询需求和灵活性等因素。

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,可以部分解决)
  • 没有命中的情况,包括查询模型范围外的分区、维度、指标

选型建议

适合离线计算、聚合计算、存储空间充裕、查询灵活度要求不高的场景。例如周期报表。这几个适应条件是“与”的关系。
如果想要实时计算,或明细查询,或存储空间相对受限,或对查询灵活度要求较高,则应当选择其他查询引擎。

Apache Kylin 3 在构建 Cube 时使用 Spark 作为计算引擎,取代了早期版本中使用的 MapReduce。为了正确配置和运行 Spark 引擎,需完成以下几个关键步骤: 首先,确保 Spark 已经正确安装并配置在 Kylin 环境中。从 Kylin v2.6.1 开始,Spark 二进制包不再包含在 Kylin 发行版中,因此需要手动下载并设置 `SPARK_HOME` 环境变量。下载并解压 Spark 后,将其移动到 `$KYLIN_HOME` 目录下,并重命名为 `spark`,同时删除一些不必要的组件以减少资源占用: ```bash wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.3.4/spark-2.3.4-bin-hadoop2.7.tgz tar -zxvf spark-2.3.4-bin-hadoop2.7.tgz -C $KYLIN_HOME mv $KYLIN_HOME/spark-2.3.4-bin-hadoop2.7 $KYLIN_HOME/spark rm -rf $KYLIN_HOME/spark/lib/spark-examples-* rm -rf $KYLIN_HOME/spark/examples rm -rf $KYLIN_HOME/spark/data rm -rf $KYLIN_HOME/spark/R ``` 其次,在 `kylin.properties` 文件中配置 Spark 相关的参数。根据集群资源情况,可以优化 Spark 的执行器配置,例如每个执行器的核心数和执行器实例的数量。常见的配置包括: ```properties kylin.engine.spark-conf.spark.executor.cores=4 kylin.engine.spark-conf.spark.executor.instances=10 ``` 这些配置项用于指定 Spark 任务在执行过程中使用的计算资源,确保 Cube 构建过程高效稳定地运行[^2]。 此外,Cube 的构建流程由任务引擎调度执行,包含多个阶段,如创建临时的 Hive 平表、计算各维度的不同值、收集各 Cuboid 的统计数据、创建 HTable、计算 Cube 数据、生成 HFile 文件、加载 HFile 到 HBase、更新 Cube 元数据以及执行垃圾回收等[^3]。 在运行 Kylin 时,还需要确保 Hadoop 和 HBase 环境正常运行,并且 Kylin 能够访问 Hive 和 HBase 中的数据。同时,建议根据实际业务需求和集群资源情况,进一步优化 Spark 配置参数,以提升 Kylin 的性能表现。 ### 配置要点总结 - Spark 必须手动安装并设置 `SPARK_HOME`。 - 在 `kylin.properties` 中合理配置 Spark 执行器参数。 - Cube 构建依赖 Spark 引擎调度执行多个阶段。 - 确保 Hadoop、Hive、HBase 环境正常运行。 - 根据实际需求优化 Spark 配置以提升性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值