酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式
本文发表于: &{ new Date(1659283200000).toLocaleDateString() }
作者:周桂民,大数据架构师和负责人,主要负责大数据平台基础建设工作
酷开科技,全称深圳市酷开网络科技股份有限公司,成立于 2006 年,自主研发了智能电视操作系统——酷开系统。酷开科技先后接受来自爱奇艺、腾讯、百度的投资入股,市场估值近百亿元,主要业务有客厅运营业务、数字化营销业务、融媒体业务、共享屏业务等。截止 2022 年 3 月,中国共计有 3 亿台客厅智能终端,激活量 1.9 亿,日活用户突破 1.2 亿人,日均开机率达 40 %。其中,酷开科技拥有 5900 万终端数、3076 万月活以及 457 分钟平均开机时长。
酷开大数据部门负责公司大数据体系框架建设,主要工作是支撑日常的 BI 分析、数据看板、人群画像等场景。客厅经济背景下的公司业务增长带来了数据量的激增,不同的数据需求衍生出多种数据服务,不同的数据服务选择不同的数据库和数仓技术,比如 MySQL、ElasticSearch、Apache HBase、ClickHouse 等。为了最大化降低运维成本、提供高性能的数据服务,做到真正的极速统一,从 2021 年下半年开始,酷开大数据部门正式引入 StarRocks。
无论是多表关联查询还是单表查询,StarRocks 在稳定性和查询速度上都有超预期的表现。50 亿数据量的明细表中查询去重操作,查询效率基本能控制在毫秒级别,目前支持在线数百人同时使用,人群画像标签计算由原来的 2-3 小时缩短到秒级返回计算结果,大大提高了业务运营的效率和体验。
目前,酷开大数据部门正在用 StarRocks 支持更多的分析场景,统一 OLAP 分析引擎,减少多引擎维护成本。
#01 业务背景
1 酷魔方数据平台
酷魔方数据平台主要面向内部业务人员,提供数据集成、数据清洗、数据分析以及可视化等服务。该产品打通内部各业务数据,为业务分析人员提供多种分析方法和分析模型,提高业务分析效率,提升活跃、留存和营收转化等。酷魔方的数据服务接口给各业务线提供数据 API 服务、数据订阅等。
平台主要提供三大分析功能:1. 标准化行为分析2. 可视化图表分析3. 数据看板
2 万户画像平台
万户画像平台是智能运营平台,帮助业务对目标客户进行人群圈定、标签管理、智能投递等人群洞察功能。主要是对 OTT 终端用户属性、行为偏好、兴趣爱好等信息进行标签化处理和计算,识别出不同的用户类别,根据不用的类别进行人群圈定,对目标用户进行精细化运营,挖掘更有价值的用户群体。
平台主要提供三大方面功能:
1. 标签管理:自定义标签,通过离线和实时任务对标签进行计算和处理
2. 自主圈人:业务运营人员可以根据任意的业务规则进行用户分群和二次圈定
3. 用户画像:业务运营人员在自定义的用户群进行画像分析
#02 历史架构和痛点
SDK 埋点数据通过 Lua 脚本服务采集后,发送到 Apache Kafka,通过 Apache Spark(以下简称 Spark)任务把数据落到 HDFS。或者通过 Apache Flink (以下简称 Flink)落地到 HDFS,再用 Spark 或者 Apache Hive (以下简称 Hive)进行数据加工处理,数据汇总后把数据放到 MySQL 或 ElasticSearch 中对外提供服务。
酷魔方数据平台里的业务明细数据,通过 Hive 或者 Spark 离线处理,或通过 Flink 实时处理,数据汇总聚合后放在 MySQL 里对外提供数据服务。
该方案在进行多维度分析时候,特别是业务数据高达数十亿的时候,单库 MySQL 是不能满足查询性能要求的,只能通过分库分表的方式来做数据拆分,这样就增加了平台的运维成本。随着业务发展,业务流量越来越大,对仅能支持单表千万级别数据的 MySQL 来说,即使采用分库分表方案,查询性能也难以支撑,还有数据压缩占比少,运维成本高等劣势。
万户画像平台主要用来满足用户标签查询需求,但对于复杂数据结构类型,ElasticSearch 就不能满足。有时还需要对用户标签进行分析处理,需要通过 Spark 提交计算任务,通常需要跑 20-30 分钟。对于业务分析人员来说,数据交互体验是非常不友好的,增加的是数据处理复杂度和数据存储成本,同时在计算时会占用非常多的队列资源。
#03 引入 StarRocks
为了解决上面的业务痛点,我们从 2021 年下半年开始调研 StarRocks和ClickHouse,并做了两者的对比测试,使用了 10 台服务器(32C+256G+SSD),80 亿数据量,得到以下测试结果:
测试SQL | 并发度 | StarRocks (95%rt) | ClickHouse (95%rt) |
单表明细过滤 | 10 | 3190 | 10283 |
单表全量分组聚合 | 30 | 6027 | 24518 |
单表分组过滤聚合 | 30 | 405 | 4305 |
根据这个测试结果,我们选型了 StarRocks,并把业务逐步切换到 StarRocks上,彻底解决了运维成本高、平台性能无法满足业务需求的痛点。
在万户画像平台,运营在做人群圈选和人群分析的运算时,之前是通过传递动态参数组成 SQL,使用 Spark SQL 去计算生成数据,再通过数据接口提供给业务方使用。整个计算过程的几十亿数据大概需要用时 30 分钟左右。引入 StarRocks 后基本上能够秒级返回计算结果,特别是通过 Bitmap 高效去重带来了较大的性能提升。
在酷魔方数据平台统一接口服务中,使用 StarRocks 做数据存储和计算,在降低了原来的 MySQL 分库分表方案运维成本的同时,还提升了计算性能。之前采用基于 MySQL 分库分表的方案,需要安排一位长期的专职运维,采用 StarRocks 后,只需在初期测试和性能调优时安排运维人员即可。在进行千万级别数据的查询时,使用 MySQL 分库分表的查询,性能就会明显变得吃力,到亿级别的数据查询时更是需要分钟级别响应。而在相同数据体量、使用相同 SQL 的情况下,StarRocks 基本都能做到毫秒级或秒级响应。
总的来说,StarRocks 不仅支撑了 BI 分析系统、统一数据接口服务和画像平台业务等业务分析要求,也简化了数据处理链路过程,帮助酷开科技实现了统一极速的分析引擎。
#04 总结与规划
在使用 StarRocks 期间主要有以下几点惊喜表现:
1. 极速的分析性能,几十亿的数据量情况下,进行多维分析可以达到秒级别的响应
2. 精确的数据去重,快速实现了人群留存计算
3. 大大降低了运维成本和分析师的 SQL 语法学习成本
4. 丰富的数据存储模型可以直接在业务场景中使用
后续希望 StarRocks 能在酷开科技更多的业务场景中使用,增加更多特性,比如复杂的数据结构类型目前支持的 Array ,目前业务数据格式很多时候是 JSON、Map、Struct 类型等。酷开大数据团队也在尝试数据湖分析场景使用,希望能推进 StarRocks 在数据湖分析的应用。