Apache Kylin 优化实战

本贴最后更新于 1624 天前,其中的信息可能已经时异事殊

背景

销售业务的特点是规模大、领域多、需求密。美团到店餐饮擎天销售系统(以下简称“擎天”)作为销售数据支持的主要载体,不仅涉及的范围较广,而且面临的技术场景也非常复杂(多组织层级数据展示及鉴权、超过 1/3 的指标需要精准去重,峰值查询已经达到数万级别)。在这样的业务背景下,建设稳定高效的 OLAP 引擎,协助分析人员快速决策,已经成为到餐擎天的核心目标。

Apache Kylin 是一个基于 Hadoop 大数据平台打造的开源 OLAP 引擎,它采用了多维立方体预计算技术,利用空间换时间的方法,将查询速度提升至亚秒级别,极大地提高了数据分析的效率,并带来了便捷、灵活的查询功能。基于技术与业务匹配度,擎天于 2016 年采用 Kylin 作为 OLAP 引擎,接下来的几年里,这套系统高效地支撑了我们的数据分析体系。

2020 年,美团到餐业务发展较快,数据指标也迅速增加。基于 Kylin 的这套系统,在构建和查询上均出现了严重的效率问题,从而影响到数据的分析决策,并给用户体验优化带来了很大的阻碍。技术团队经过半年左右的时间,对 Kylin 进行一系列的优化迭代,包括维度裁剪、模型设计以及资源适配等等等,帮助销售业绩数据 SLA 从 90% 提升至 99.99%。基于这次实战,我们沉淀了一套涵盖了“原理解读”、“过程拆解”、“实施路线”的技术方案。希望这些经验与总结,能够帮助业界更多的技术团队提高数据产出与业务决策的效率。

问题与目标

销售作为衔接平台和商家的桥梁,包含销售到店和电话拜访两种业务模式,以战区、人力组织架构逐级管理,所有分析均需要按 2 套组织层级查看。在指标口径一致、数据产出及时等要求下,我们结合 Kylin 的预计算思想,进行了数据的架构设计。如下图所示:、

而 Kylin 计算维度组合的公式是 2^N(N 为维度个数),官方提供维度剪枝的方式,减少维度组合个数。但由于到餐业务的特殊性,单任务不可裁剪的组合个数仍高达 1000+。在需求迭代以及人力、战区组织变动的场景下,需要回溯全部历史数据,会耗费大量的资源以及超高的构建时长。而基于业务划分的架构设计,虽能够极大地保证数据产出的解耦,保证指标口径的一致性,但是对 Kylin 构建产生了很大的压力,进而导致资源占用大、耗时长。基于以上业务现状,我们归纳了 Kylin 的 MOLAP 模式下存在的问题,具体如下:

  • 效率问题命中难(实现原理):构建过程步骤多,各步骤之间强关联,仅从问题的表象很难发现问题的根本原因,无法行之有效地解决问题。
  • 构建引擎未迭代(构建过程):历史任务仍采用 MapReduce 作为构建引擎,没有切换到构建效率更高的 Spark。
  • 资源利用不合理(构建过程):资源浪费、资源等待,默认平台动态资源适配方式,导致小任务申请了大量资源,数据切分不合理,产生了大量的小文件,从而造成资源浪费、大量任务等待。
  • 核心任务耗时长(实施路线):擎天销售交易业绩数据指标的源表数据量大、维度组合多、膨胀率高,导致每天构建的时长超过 2 个小时。
  • SLA 质量不达标(实施路线):SLA 的整体达成率未能达到预期目标。

在认真分析完问题,并确定提效的大目标后,我们对 Kylin 的构建过程进行了分类,拆解出在构建过程中能提升效率的核心环节,通过“原理解读”、“层层拆解”、“由点及面”的手段,达成双向降低的目标。具体量化目标如下图所示:

更多内容请访问:https://www.tech-field.org/articles/2020/12/04/1607070868856.html

  • Kylin
    1 引用
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    90 引用 • 122 回帖 • 620 关注
  • olap
    3 引用 • 4 回帖
  • SLA
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 702 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 253 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 390 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 432 关注
  • abitmean

    有点意思就行了

    33 关注
  • Visio
    1 引用 • 2 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 53 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 257 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    90 引用 • 122 回帖 • 620 关注
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    20 引用 • 37 回帖 • 576 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    184 引用 • 1020 回帖
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 1 关注
  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    133 引用 • 1124 回帖 • 108 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 3 关注
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖 • 1 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 529 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 1 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 407 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    29 引用 • 230 回帖 • 128 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 654 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖