[转] Apache Kylin在百度地图的实践

前言

百度地图开放平台业务部数据智能组主要负责百度地图内部相关业务的大数据计算分析,处理日常百亿级规模数据,为不同业务提供单条SQL毫秒级响应的OLAP多维分析查询服务。

对于Apache Kylin在实际生产环境中的应用,在国内,百度地图数据智能组是最早的一批实践者之一。Apache Kylin在2014年11月开源,当时,我们团队正需要搭建一套完整的大数据OLAP分析计算平台,用来提供百亿行级数据单条SQL毫秒到秒级的多维分析查询服务,在技术选型过程中,我们参考了Apache Drill、Presto、Impala、Spark SQL、Apache Kylin等。对于Apache Drill和Presto因生产环境案例较少,考虑到后期遇到问题难以交互讨论,且Apache Drill整体发展不够成熟。对于Impala和Spark SQL,主要基于内存计算,对机器资源要求较高,单条SQL能够满足秒级动态查询响应,但交互页面通常含有多条SQL查询请求,在超大规模数据规模下,动态计算亦难以满足要求。后来,我们关注到了基于MapReduce预计算生成Cube并提供低延迟查询的Apache Kylin解决方案,并于2015年2月左右在生产环境完成了Apache Kylin的首次完整部署。

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区,并于2015年11月正式毕业成为Apache顶级项目。

  1. 大数据多维分析的挑战

我们在Apache Kylin集群上跑了多个Cube测试,结果表明它能够有效解决大数据计算分析的3大痛点问题。

痛点一:百亿级海量数据多维指标动态计算耗时问题,Apache Kylin通过预计算生成Cube结果数据集并存储到HBase的方式解决。

痛点二:复杂条件筛选问题,用户查询时,Apache Kylin利用router查找算法及优化的HBase Coprocessor解决;

痛点三:跨月、季度、年等大时间区间查询问题,对于预计算结果的存储,Apache Kylin利用Cube的Data Segment分区存储管理解决。

这3个痛点的解决,使我们能够在百亿级大数据规模下,且数据模型确定的具体多维分析产品中,达到单条SQL毫秒级响应。因此,我们对Apache Kylin产生了较高的兴趣,大数据计算查询分析的应用中,一个页面通常需要多条SQL查询,假设单条SQL查询需要2秒响应,页面共有5个SQL请求,总共就需要10秒左右,这是不可接受的。而此时,Apache Kylin对于一个页面多条SQL查询响应的优势就尤为突出。

在实践过程中,根据公司不同业务的需求,我们数据智能团队的大数据OLAP平台后台存储与查询引擎采用了由Apache Kylin、Impala及Spark SQL组成,在中小数据规模且分析维度指标较为随机的情况下,平台可提供Impala或Spark SQL服务;在超大规模百亿级行数据的具体产品案例上,因查询性能需求较高,同时具体产品对其需要分析的维度和指标较为明确,我们使用Apache Kylin解决方案。下文将主要介绍Apache Kylin在百度地图内部的实践使用。

  1. 大数据OLAP平台系统架构

你可能感兴趣的:(kylin)