阿里妈妈Dolphin智能计算引擎基于Flink+Hologres实践

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文将会介绍阿里妈妈Dolphin智能计算引擎基于Flink+Hologres实践。

阿里妈妈数据引擎团队负责广告营销计算引擎Dophin的开发,目前支撑百万级广告主的营销产品,支持万亿级数据毫秒级交互式人群圈选、洞察分析及百亿级数据秒级广告效果分析,同时支持OLAP、实时、离线及AI超融合计算能力,为商家端产品万相台、直通车、超级推荐和达摩盘等营销产品提供极速的数据探索能力。


1. 阿里妈妈Dolphin智能计算引擎介绍

用户打开淘宝 App 时,后台会有两种类型的请求,第一种类型是满足用户诉求的自然推荐,第二种请求是满足用户和商家综合诉求的广告推荐。例如打开淘宝看到某品牌,是因为该品牌使用阿里妈妈营销产品圈选人群进行广告投放,被圈选的人会看到该广告。

妈妈1.png

商家端营销产品的主要目标是服务于广告主,帮助广告主进行人群投放,从而提升经营效果。此类营销产品覆盖的场景非常广泛,包括人群圈选、洞察分析、Lookalike、人群推荐等场景。这些场景会有OLAP分析、AI算法和实时特征计算的基础能力需求,基于这样一个数据+算法综合能力需求背景下,阿里妈妈自研了Dolphin计算引擎。

妈妈2.png


Dolphin引擎是一个分析AI一体化的超融合引擎,拥有 OLAP分析计算、 Streaming 流计算、 Batch 批量计算和AI 算法计算四个领域能力,这些能力基于SQL组件和Index Build 组件构建:

  • SQL 组件的主要能力是 SQL转义、路由、负载均衡、联邦查询。
  • Index Build 组件主要负责智能索引、多级索引(Bitmap索引、时间序列索引等)、调度控制等。

妈妈3.png

Dophin引擎提供了自研索引、智能物化、智能索引选择、异构数据源查询和近似计算等几个优势功能。其中:

  • 智能物化:智能物化指能够自动将SQL转化为物化视图,无需人工手动操作。使用深度模型对业务历史查询 SQL 进行时序分析,比如哪些广告主在什么时间周期的数据使用频率更高,可以选择将高频的使用数据进行物化,以提高数据查询效率。
  • 智能索引:大多数业界的做法是为查询建立全索引,而智能索引要做的事情就是分析 SQL 查询语句,判断条件命中率,从而推荐不同的索引,推荐目标为让索引对数据查询的过滤量最大,同时避免建立无效索引占用。
  • 近似计算:根据统计的结果用近似的算法来计算,主要针对大规模数据,计算其近似结果。


目前,Dolphin 引擎支撑的业务规模为 2w+core,每日请求量2亿+,QPS为3000+,支撑百万级广告主、存储了PB级数据,涵盖阿里10+核心BU的核心场景如人群圈选、洞察分析等场景,业务方可以通过Dolphin 引擎就能非常高效且低成本的进行数据探索。


Dolphin引擎主要解决两个问题,一个是超大规模场景下使用通用计算方法存在的性能瓶颈问题;第二个就是降低业务方使用引擎成本,甚至做到对底层引擎无感知。很多通用引擎并不能直接解决业务的性能问题,因此需要对数据做索引以实现查询优化。因此我们在已有的引擎基础上建设了Dolphin引擎。那从Dolphin引擎架构图我们也可以看到,引擎的底层计算存储层主要由Flink+Hologres来实现,这就相当于,广告主每一次在Dolphin引擎上的计算,最终都会被转换成由Flink+Hologres来完成,那么我们为什么选择Flink+Hologres这套架构呢?


2. 为什么选用Flink+Hologres?

2.1 底层引擎的强需求

2.1.1 高性能

广告场景对延迟有着很敏感的要求,如果底层引擎的性能不足,即使上层应用再做优化,也会导致计算性能大打折扣,从而导致广告投放等不精准。

2.1.2 可扩展

底层引擎需要足够的可扩展,这样上层应用才能更加灵活的去承接新的业务、新的场景,应对业务高低峰期等情况


2.2 Flink 和 Hologres能够满足以上两个业务需求

2.2.1 实时引擎Flink支持低延迟,支持自动调优,且技术稳定成熟。用户在 Dolphin Streaming平台上提交 SQL 时,SQL会被转译为Flink SQL,提交给Flink引擎,这里会利用Flink autoscale自动配置调优功能来自动调整,降低可了用户对 Flink 的学习成本和调优维护成本。

2.2.2 Dolphin引擎与Hologres更有着更长的合作历史:在2019 年Dolphin引擎与 Hologres共建了 Bitmap 计算能力,实现业界公开信息里最大规模、最高性能、最低使用成本的圈人能力;2020 年共建了千万级人群中心,实现广告人群统一管理;2021 年,Dolphin引擎支撑了算法业务场景,使用 Hologres向量计算能力支撑算法业务,主要支撑推荐算法里粗排召回计算环节;2022年,支持了算法实时特征开发能力,这里就运用到 Hologres实时写入和点查能力,实现了更高效的实时开发。最终,我们将Hologres的所有能力整合在一起,形成了超融合一体化引擎能力。

妈妈4.png


2.3 引擎实现细节1:如何解决超大规模OLAP计算能力

2.3.1 挑战

Dolphin OLAP 计算的核心在于解决超大规模问题。阿里妈妈广告场景上存放着大量的数据,为了让广告主有更好的用户体验,需要支持更复杂的计算逻辑和更快的计算速度。其中典型的场景有单SQL几十张表Join、单表最高万亿行规模、单表基数最高百万级和万级标签日更新。


2.3.2 解决方案

例如广告场景上有很常见的数据表:用户基础表(性别年龄)和用户店铺表(用户、店铺类型),当需要查询 20、 30 岁且逛过某品牌的用户数量时,如果数据量很少,通用引擎可以很快得出结果;但如果SQL涉及Join的表有几十张,而且还可能存在万亿级表,此类情况下通用计算引擎无法完成计算。因此,我们基于Hologres共建了一套 Bitmap 计算方案。


2.3.3 具体方案流程

  1. 方案查询流程:用户输入逻辑执行 SQL ,Dolphin引擎将用户逻辑执行 SQL 转译为物理执行 SQL ,然后传递给 Hologres执行。
  2. 方案索引构建流程:MaxCompute 将标签数据进行预处理,然后将它构建为 Bitmap 索引,再写入到 Hologres,即可实现的 Bitmap查询。

妈妈5.png

通过这样的Bitmap方案,能够让查询拥有更好的性能和更低的存储, 在超大规模OLAP计算场景中,支撑了200+QPS ,平均百毫秒查询性能,以及万亿行数据秒级精确计算,高效支撑用户交互式分析低延迟的用户体验。


2.4 引擎实现细节2:如何实现低成本的实时开发能力

广告场景通常都是实时计算,这里我们通过Flink来支持是非常方便的,而我们的面向的用户通常都是不同岗位,比如算法、运营等,假如全部都用Flink去开发任务,那么对于上层应用的同学来说就会额外增加非常多的学习成本和压力,比如既要学会Flink SQL,还要学会Hologres SQL,流程和操作都非常繁琐。为了降低用户的学习成本,提升开发效率,Dolphin使用OpenAPI 做了丰富的实践,开发了一套 Dolphin Streaming实时开发平台,通过Open API 直接以服务接口调用的形式调用 Flink 提交作业、暂停作业、管理作业等。


Dolphin Streaming将 Hologres和 Flink 做了封装,对用户暴露更简单的开发接口Dolphin SQL 。用户在阿里妈妈交互式研发平台上提交 Dolphin SQL,SQL变会自动通过 Dolphin  Streaming 进行处理,做 SQL 解析及转译,将 SQL 通过 OpenAPI 发送给 Flink,拉起作业做执行。执行完后,数据会实时写入到 Hologres,然后通过Dolphin SQL将写入 Hologres的特征直接查询出来,无需再考虑存储、配置认证信息、token信息等,只需像使用数据库一样开发实时作业,整个流程非常顺滑简单,大大提高开发效率。

妈妈6.png


demo1:计算用户最近50条行为序列

用户最近 50 条行为序列是算法序列模型里常用的特征,一般需要开发行为序列特征,如果用Dolphin Streaming 开发,只需简单三步

  1. 第一步,定义数据源表。Biztype可直接填写为tt ,tt 是阿里的实时数据源。这里如果要写Flink SQL,则需要登入tt管理平台,查询topic并订阅subID。
  2. 第二步,定义输出表Biztype=feature 代表写入到 Hologres,然后填好 PK 参数即可。
  3. 第三,定义计算逻辑。SQL 执行完之后,数据源源不断地写入,通过 select user_id, product_id from ** where user _id=**即可查询用户特征。

妈妈7.png

demo2:实时Debug功能。

在实时开发时,经常需要查看上游数据源,以往的方式通常需要定义一个print输出源,然后定义输入源和执行逻辑,将数据写到标准输出,再通过查看日志才能获取到上游数据源而我们实现了更简单的方式。

通过 create table 形式注册一张表以后,执行 select user_id from某表,结果即直接展示表的明细。

妈妈8.png

通过Dolphin Streaming,我们可以非常高效的将复杂计算逻辑进行自动封装与转换,用户无需自己写SQL,也不需要去学习多种开发语言,就能非常高效的拿到想要的数据,大大降低了学习成本和使用门槛,同时也节省了开发效率。


3. 业务场景实战

3.1 场景1:实时营销推荐

实时营销推荐是广告中最常见的场景,在该场景下,最大的痛点在于:广告主在使用营销平台时,常常面对如何推广、通过何种渠道推广等问题。


基于这样的用户诉求,从算法角度为广告主解决该问题:通过广告主点击某些信息、某些广告点位时,判断广告主意向,结合意向和广告主本身商家店铺和商品信息,为其推荐能提升经营效果的商品以及效果更优的投放渠道,从而让广告主的投放体验更好。


基于以上需求,我们开发了一套用于捕获用户实时行为的作业:通过 Flink 计算商家实时行为日志,存储到Hologres,然后在线模型直接读取特征,通过实时特征提升模型的推荐效果。

妈妈9.png

Dolphin Streaming方案主要使用了 Flink 实时计算、Hologres实时写入以及行表的点查能力,使整体开发效率提升三倍以上,推荐效果更佳。


3.2 场景2:向量召回计算

在算法里万物皆可向量表示,尤其是在推荐算法和召回流程中,经常使用向量召回获取 Top K 相似对象,在阿里妈妈向量召回的场景中,我们使用Hologres的向量召回能力,以Lookalike场景为例具体说明:


Lookalike是广告产品的重要能力,核心是基于种子人群特征选择相似人群,常应用在拉新场景。以电商场景为例,其原理可以抽象理解为针对已经在店铺有过行为的用户,分析其特征,寻找与之特征相似的用户,将宝贝推广给此类用户,从而促进店铺新用户增长。基于向量Lookalike算法实现过程如下:

  • 第一步,广告主圈种子人群。
  • 第二步,基于种子人群计算中心向量,再通过中心向量从整体用户里召回 Top K相似的用户。

妈妈10.png

传统算法下,Dolphin会使用没有向量召回能力的传统数据库,将数据导入到数据库中。先由Dolphin查询数据库,计算种子人群中心向量,然后通过Faiss将Top K 向量查出。传统方案整体运维和管理成本较高,因此我们对其进行了升级,直接使用 Dolphin 调用 Hologres,因为Hologres能够同时支持数据库功能和Proxima向量功能,简化了计算流程。


基于 Hologres的向量召回能力,我们开发了实时向量召回和批量向量召回能力,用户直接输入 SQL 即可调用底层 Hologres,Dolphin封装了容灾和负载均衡等重要能力,简单地填入参数即可完成批量向量召回的计算。其中

  • 实时向量召回:支撑1000+QPS,平均延迟50ms+,支撑了直通车、万向台、达摩盘等多个商家段营销业务场景
  • 批量向量召回:目前已对外产品化,提升开发效率3倍+,有效支撑达摩盘、直通车等多个算法业务


4. 总结

基于 Flink+ Hologres 的强大能力,我们得以建设更贴近业务领域的超融合一体化Dolphin引擎,主要包括基于 Bitmap 的高性能 OLAP 计算、更简单灵活的实时开发能力以及基于Hologres强大的 AI 向量召回能力。

未来,我们会在智能化、一体化方面继续探索,不断提升用户体验。


了解Hologres

合集.png

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
3月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
430 0
|
1月前
|
存储 消息中间件 人工智能
云栖实录|实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
本文根据 2025 云栖大会演讲整理而成,演讲信息如下 演讲人:黄鹏程 阿里云智能集团计算平台事业部实时计算Flink版产品负责人
157 1
云栖实录|实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
|
6月前
|
存储 消息中间件 OLAP
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
本文整理自淘天集团高级数据开发工程师朱奥在Flink Forward Asia 2024的分享,围绕实时数仓优化展开。内容涵盖项目背景、核心策略、解决方案、项目价值及未来计划五部分。通过引入Paimon和Hologres技术,解决当前流批存储不统一、实时数据可见性差等痛点,实现流批一体存储与高效近实时数据加工。项目显著提升了数据时效性和开发运维效率,降低了使用门槛与成本,并规划未来在集团内推广湖仓一体架构,探索更多技术创新场景。
1394 3
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
|
7月前
|
存储 消息中间件 Kafka
基于 Flink 的中国电信星海时空数据多引擎实时改造
本文整理自中国电信集团大数据架构师李新虎老师在Flink Forward Asia 2024的分享,围绕星海时空智能系统展开,涵盖四个核心部分:时空数据现状、实时场景多引擎化、典型应用及未来展望。系统日处理8000亿条数据,具备亚米级定位能力,通过Flink多引擎架构解决数据膨胀与响应时效等问题,优化资源利用并提升计算效率。应用场景包括运动状态识别、个体行为分析和群智感知,未来将推进湖仓一体改造与三维时空服务体系建设,助力数字化转型与智慧城市建设。
781 3
基于 Flink 的中国电信星海时空数据多引擎实时改造
|
7月前
|
存储 消息中间件 分布式计算
Hologres实时数仓在B站游戏的建设与实践
本文介绍了B站游戏业务中实时数据仓库的构建与优化过程。为满足日益增长的数据实时性需求,采用了Hologres作为核心组件优化传统Lambda架构,实现了存储层面的流批一体化及离线-实时数据的无缝衔接。文章详细描述了架构选型、分层设计(ODS、DWD、DIM、ADS)及关键技术挑战的解决方法,如高QPS点查、数据乱序重写等。目前,该实时数仓已广泛应用于运营分析、广告投放等多个场景,并计划进一步完善实时指标体系、扩展明细层应用及研发数据实时解析能力。
Hologres实时数仓在B站游戏的建设与实践
|
8月前
|
存储 分布式计算 MaxCompute
Hologres实时湖仓能力入门实践
本文由武润雪(栩染)撰写,介绍Hologres 3.0版本作为一体化实时湖仓平台的升级特性。其核心能力包括湖仓存储一体、多模式计算一体、分析服务一体及Data+AI一体,极大提升数据开发效率。文章详细解析了两种湖仓架构:MaxCompute + Hologres实现离线实时一体化,以及Hologres + DLF + OSS构建开放湖仓架构,并深入探讨元数据抽象、权限互通等重点功能,同时提供具体使用说明与Demo演示。
|
8月前
|
SQL 弹性计算 运维
Hologres计算组实例&分时弹性入门实践
本文由骆撷冬(Hologres PD)撰写,围绕Hologres计算组实例与分时弹性的入门实践展开。内容分为三部分:第一部分介绍Hologres计算组实例的原理与架构,解决负载隔离、资源浪费、大任务和运维难题;第二部分演示计算组实例的入门实践,包括管理、授权、连接及监控等操作;第三部分讲解分时弹性的使用,涵盖配置方法、成本优化及监控告警。通过具体案例与操作步骤,帮助用户更好地理解和应用Hologres的弹性计算能力。
|
4月前
|
存储 消息中间件 搜索推荐
京东零售基于Flink的推荐系统智能数据体系
摘要:本文整理自京东零售技术专家张颖老师,在 Flink Forward Asia 2024 生产实践(二)专场中的分享,介绍了基于Flink构建的推荐系统数据,以及Flink智能体系带来的智能服务功能。内容分为以下六个部分: 推荐系统架构 索引 样本 特征 可解释 指标 Tips:关注「公众号」回复 FFA 2024 查看会后资料~
330 1
京东零售基于Flink的推荐系统智能数据体系

相关产品

  • 实时数仓 Hologres