酷开科技 × 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 在数据湖分析的应用。