论文部分内容阅读
大数据时代下,“拥有数据就意味着拥有价值”的思想已经深入人心,而繁杂的数据挖掘技术中,无论是哪一种都离不开数据的查询分析这个基础,它是数据处理和挖掘首先需要面对的难题。目前,有大量关于分布式查询分析引擎的研究和开源工具,但是随着数据爆炸式增长,基于列式存储和MMP的查询分析引擎Impala很难实时甚至短时间内反馈结果,而基于预计算思想的查询分析引擎Kylin则面临着维度爆炸的问题。应用方面,公司为了给各个业务线提供满足各种需求的公司平台级数据查询分析服务,常采用的方式是在同样的数据集上同时搭建Impala和Kylin来满足不同的业务需求,但这种粗粒度的查询引擎合并方案对平台的使用者来说学习成本很高,很多时候业务人员很难判断采用哪种查询分析工具能提供更快更好的服务。针对以上学术和商业上的缺点,本文对基于Kylin的数据实时查询平台进行了深入的学术研究与优化。本文主要研究内容和成果包括以下几点:第一、针对Kylin快速立方体构建模型面临的维度爆炸和cuboid浪费问题,提出和研究了基于查询日志统计的立方体构建模型,按照查询日志反映的需求逐步物化数据立方体中的cuboid节点,并记录整个数据立方体的物化状态,从而优化Kylin立方体构建的资源消耗,缩短数据立方体构建时长,缩小立方体空间占用。第二、针对数据立方体静态物化策略无法适应查询分布的变动和迁移、部分物化视图失效、查询性能降低的不足,提出物化视图自调整算法,以固定查询次数为周期,更新查询统计值,并根据设定的阈值自适应调整物化视图集合,使得查询效率保持稳定,减少物化视图抖动。第三、针对数据查询分析平台上多套数据查询引擎并存的缺陷,研究了一种查询引擎选择策略,实现SQL任务按照路由策略自动分发方法,动态选择相对更优的查询引擎,并以此为基础开发实现了基于Kylin的数据实时查询平台。使得数据分析人员可以在不了解数据立方体的情况下利用到Kylin预计算的数据,降低学习成本;同时可以在Cuboid missing的情况下,Kylin效果不佳时,将查询任务重新导流到Impala,弥补本文提出的基于查询日志的数据立方体构建模型的缺点。基于上述研究内容和成果,本文在开源引擎Kylin代码的基础上修改优化,实现了基于查询日志的立方体构建模型,并以此为基础,搭建了 Kylin,Impala,Hive三种查询引擎并存的数据实时查询分析平台,该系统能够根据用户配置构建cuboid稀疏的数据立方体,并利用历史查询统计信息调整数据立方体,为用户提供相对更优的查询引擎选择策略和查询分析服务。