微信号:ApacheKylin

介绍:Apache Kylin 公众号,介绍Kylin的各种功能,特性以及相关的新闻,活动等.更多信息,请访问Kylin网站:http://kylin.io 相关技术问题,请订阅Apache Kylin邮件列表

【技术帖】使用KyBot优化Apache Kylin存储

2017-08-25 18:01 李栋


Apache Kylin使用“空间换时间”极大提高了查询效率,但“空间”也并非无限,因此,在保持查询效率不变的前提下,减少存储占用显得尤为重要。本文将探讨如何优化存储资源的问题。


众所周知,Apache Kylin基于预计算的思想,实现了在Hadoop上对PB规模数据集进行高速OLAP分析的需求,查询性能可以达到秒级甚至亚秒级。既然是预计算,势必需要占用一定的集群存储资源;如果使用不当,可能造成大量的资源浪费。如何优化存储资源占用,就是本文讨论的话题。


关于存储资源


Apache Kylin使用“空间换时间”极大提高了查询效率。但“空间”也并非无限,不能无节制使用;而且需要的存储越多,生成数据消耗的预计算时间和计算资源就越多,维护成本也越大。因此,在保持查询效率不变的前提下,减少存储占用显得尤为重要。


Apache Kylin对于存储资源的占用主要包括以下几个方面:


  • 元数据:包含Cube、Model等的定义信息,以及构建任务、字典、维表镜像等;默认保存在HBase当中


  • Cube数据:即预计算的结果;默认保存在HBase当中


  • HDFS文件:Cube构建任务生成的中间文件,主要用于Segment合并等操作;默认保存在Apache Kylin的HDFS工作目录当中


  • Hive表:Cube构建时为了从数据源拉取数据生成的临时外表,数据默认保存在Apache Kylin的HDFS工作目录当中,一般会在任务完成时自动删除


想要优化存储,首先需要了解整体及各项资源的存储分布,进而找到资源瓶颈和优化方案。但是Apache Kylin中没有存储监控和汇总统计的功能,想要快速洞悉存储占用并不是那么容易——而KyBot擅长解决这一问题。


使用KyBot优化存储


KyBot (https://kybot.io) 是为Apache Kylin及其商业版KAP提供在线诊断、优化及服务的平台。通过分析Apache Kylin的日志等信息,为用户提供可视化仪表盘、系统优化、故障排查、知识库等自助式服务。关于KyBot的使用可以参考文章[1]。

 

登录进入KyBot后,通过左侧菜单进入“存储”仪表盘,即可看到整个系统的存储统计指标,如图1所示。


图 1 存储仪表盘


在图1中,A区域代表整个HBase存储的统计,在这个例子中总共使用了1.3 TB的空间,其中48.5 GB是元数据,共计35个HTable。通过这些统计,管理员可以直观掌握Kylin的存储用量,也能为集群扩容、运维计划提供数据支撑。

 

B区域代表HBase存储用量的变化趋势,帮助用户快速定位用量突变等异常情况。这里的采样时间是用户每次生成KyBot诊断包的时间,因此,用户只需要定期生成并上传诊断包(如每日一次),就可以在此处观测到完整的存储变化曲线。

 

C区域代表检测出的可清理项统计,帮助管理员明确存储健康程度,并合理安排运维任务。在这个例子中,通过数据清理可以回收291.3 GB空间。

 

通过这些仪表盘,管理员可以一目了然地了解存储占用情况,但是如果发现用量过高,该如何优化呢?下文将列出一些常见的优化方案。


数据清理


在Apache Kylin的运行过程当中,会产生一定的中间数据,这些数据有的会在使用后自动删除,有的会保留下来作为数据备份。随着使用越来越久,这些数据的价值也越来越低,管理员可以通过数据清理回收这些数据的空间。

 

可清理的数据包括元数据、Cube数据。可清理的元数据主要包括很久之前的构建任务描述、无用的字典和维表镜像等,数据过多可能导致页面加载过慢、内存占用过多等问题。如果A区域表示的元数据表过大,则需要进行元数据清理,清理方式参考文章[2]。

 

当用户清空一个Cube时,系统并不会把Cube数据立即删除,而只是更新了Cube元数据。这是为了当用户操作失误时,还可以通过恢复元数据快速回滚;当用户不再需要回滚,这些数据就可以被清理;同样的还有任务中断留下的Hive中间表等等。C区域表示的“可清理项”统计过大,则表示需要进行存储清理,清理方式参考文章[3]。


降低Cube膨胀率


存储中最具重量级的就是Cube数据,如果发现总体存储用量异常之大,那么极有可能是有个别Cube极度膨胀导致。


图 2 Cube膨胀倍数统计

 

切换至KyBot的Cube仪表盘查看“Cube膨胀倍数统计”图表,如图2所示,可以快速根据膨胀倍数找到最为异常的Cube,并进入Cube调优页面,观察“Cuboid重合率”图表:


图 3 Cuboid重合率统计


如图3所示,每根柱子代表一个Cuboid和父级Cuboid的重合率,重合率100%则代表当前Cuboid是冗余的,可以被删除。图3中的Cube有很多冗余Cuboid,说明该Cube有很大优化空间,即可以通过调整Cube设计减小冗余Cuboid,从而降低膨胀率,进而有效减小系统的存储资源用量,同时不影响查询性能。有关Cuboid重合率和Cube优化方案,请参考文章[4],本文不再赘述。


总结


“空间换时间”是Apache Kylin在大数据分析领域的杀手锏,为了让它永久锋利,就需要通过不断优化进行“保养”,如存储优化、模型优化等等。KyBot是专业、智能的“保养顾问”,可以达到事半功倍的效果。如果你也有存储方面的困扰,不妨参考本文一试。


参考文章


[1] 【技术贴】KyBot快速入门指南

[2] 元数据清理

http://kylin.apache.org/docs21/howto/howto_backup_metadata.html

[3] 存储清理 

http://kylin.apache.org/docs21/howto/howto_cleanup_storage.html

[4] Apache Kylin 深入Cube和查询优化 


更多信息请点击阅读原文


 "Apache and Apache Kylin are either registered trademarks or trademarks of The Apache Software Foundation in the US and/or other countries. No endorsement by The Apache Software Foundation is implied by the use of these marks."


您可能还会想看


Apache Kylin v2.1.0正式发布

【案例分享,附PPT】Druid与Apache Kylin在美团的选型与实践

【干货,附PPT】:Apache Kylin v2.x最新特性分享

Apache Kylin优化利器KyBot: Rowkey一键优化

【案例分享】唯品会海量实时OLAP分析技术升级之路

【技术帖】Kylin v2.0 Spark Cubing优化改进

【技术帖】使用KyBot寻找Apache Kylin离线构建瓶颈

【技术帖】Apache Kylin支持Query Pushdown


 
apachekylin 更多文章 Apache Kylin查询性能优化 使用Kyligence Robot诊断Apache Kylin系统故障 Kyligence Robot V1.5发布说明 【干货】AWS上Apache Kylin调度系统的设计 Apache Kylin v2.2.0正式发布
猜您喜欢 探索式测试基础系列——生活协奏曲 【大宝电台】设计师、创业孵化器、漫画形象作者,多重身份定义自己! Android网络编程概述 服务端功能测试小记