论文解读:基于 OpenMLDB 的流式特征计算优化

news/2024/7/4 7:48:31 标签: 人工智能, 开源, 数据库, 时序数据库, 特征

近期,数据库领域的顶级学术会议 ICDE 2023 在迪斯尼主题公园的故乡 - 美国的安纳海姆(Anaheim)举办。由 OpenMLDB 开源社区和新加坡科技设计大学(Singapore University of Technology and Design)联合完成的研究工作在 ICDE 2023 上作为工业界的常规论文发表。该项研究工作增强了 OpenMLDB 的流式特征计算能力,对其中的关键操作 Interval Join 进行了深度优化,取得了比目前工业界普遍使用的算法高达数量级的吞吐和延迟优化。基于该优化算法,克服了流式计算在实时机器学习领域所遇到的性能瓶颈,可以支持在金融、风控、推荐等领域的毫秒级实时流式特征计算的需求。其论文预印版可在此链接阅读:Scalable Online Interval Join on Modern Multicore Processors in OpenMLDB

file
file
在这里插入图片描述

OpenMLDB 作为一个线上线下一致的实时特征计算平台,被广泛应用于如反欺诈、风控、实时推荐等场景。在本次的研究工作中,双方合作对基于 OpenMLDB 进行流式特征的计算能力进行了深度优化。特别的,我们关注其中的性能瓶颈,即 Interval Join 操作。下图为 Interval Join 的示意图。其基于数据流 S,定义一个往前两秒的时间窗口,对数据流 R 上在对应时间窗口内的数据进行 JOIN 或者聚合操作,完成需要的特征计算逻辑。该操作在 Flink 中即为 Interval Join,在 OpenMLDB 中是通过 WINDOW UNION 语法进行副表多行聚合特征的开发,或者也被称为 point-in-time join/aggregation。

file

Interval Join 在现有的工业界流式处理系统中,一般使用 key-partitioned based join 算法,简称为 Key-OIJ。比如在工业界中普遍使用的流式计算框架 Flink,即使用了 Key-OIJ 的算法实现 Interval Join 的计算任务。此种算法对于一个 buffer 内的 R 和 S 做 partition,然后对于在相同 partition 内的数据再进行 join 或者聚合操作。在此次研究工作中,我们发现 Key-OIJ 在很多真实世界的工作负载中存在严重的性能问题。主要总结为:

  • 工作负载不平衡和数据倾斜。当 key 的数目较少时(甚至如 key 的数量小于线程数量),非常容易出现数据倾斜的问题,从而导致整体系统的效率大幅下降。
  • 当存在时间上的重叠窗口时,该算法会带来大量的重复计算,导致大窗口下整体计算效率低下。
  • 由于数据无序,导致了整个计算过程的大量数据扫描;并且需要缓存更多的数据以保证结果的正确性。

在实时机器学习领域,实时特征计算一般对性能的需求在毫秒级别。使用 Key-OIJ 算法进行线上实时计算,很可能会因为高延迟而无法满足业务需求。因此,我们需要对该算法进行进一步的优化,以满足实时机器学习的需求。
为了克服以上 Key-OIJ 算法存在的问题,优化 Interval Join 的性能,我们在 OpenMLDB 的现有算法基础上,提出了一个全新的算法,称为 Scalable Online Interval Join(Scale-OIJ)。该算法针对此类工作负载优化,基于 OpenMLDB 的核心数据结构 - 双层跳表,设计了一个支持高效率单写多读(Single-Writer-Multiple-Reader index,即 SWMR)优化的索引。如下图显示了该核心数据结构和 SWMR 机制。第一次跳表维护键值到第二次跳表的映射关系;第二次跳表维护时间戳到数据行的映射关系,通过双层跳表的数据结构,可以以 log(N) 的时间复杂度,定位到需要的窗口数据,避免了如 Key-OIJ 算法中的大量数据扫描。通过支持单写多读的无锁并行数据结构,可以更加轻量的在多线程间共享数据。

在这里插入图片描述

file

除了基于双层跳表的核心数据结构,我们还引入了更多的优化技术。

  • 动态调度:通过分析实时数据流的分布情况,动态调整 partition 的策略,使得数据可以更均匀地分布到所有线程上,避免了工作负载不平衡和数据倾斜。基于单写多读的数据结构,不同线程之间可以共享数据,协同对同一个 key 进行处理,即使当 key 的数目较少时,所有线程仍然可以保持较高的稳定的 CPU 利用率。
  • 增量聚合:真实数据集中,会出现大量的窗口重叠的情况,很大地浪费了计算资源。通过利用之前计算的结果,增量地更新当前计算,从而避免了重复的数据扫描和计算。当窗口很大的情况下,极大地减少了整体的数据访问和计算。

基于以上的优化,我们对 Scale-OIJ 算法进行了系统性的评估。我们使用了三个具备不同特性的真实世界数据集进行测试,测试数据集和实验结果显示如下。可以看到,在三个不同的数据集下,我们设计的 Scale-OIJ 算法比现有的 Key-OIJ 算法均有大幅的提升:在吞吐方面,有多达 24 倍的提升;在延迟方面,最多缩短了 99% 的延迟。

file
在这里插入图片描述

目前,该 paper 提出的 Scale-OIJ 算法已经和 OpenMLDB 进行了部分整合。未来,我们将完成最终的工程化整合,为流式特征在 OpenMLDB 的实时处理提供进一步的性能优化。我们也欢迎社区内的开发者和我们进行前沿的学术合作,共同打造 OpenMLDB 在技术上的领先性。

扫描以下二维码加入我们的社区技术讨论群

file

参考资料

  • ICDE 论文原文:https://intellistream.github.io/downloads/papers/Zhang-2023-OIJ-OpenMLDB_CR.pdf
  • OpenMLDB 的核心数据结构:实时引擎核心数据结构和优化解析
  • OpenMLDB 内基于 WINDOW UNION 语法构造副表多行聚合特征:https://openmldb.ai/docs/zh/main/tutorial/tutorial_sql_2.html#id3
  • OpenMLDB 产品文档:https://openmldb.ai/docs/zh/main/
  • OpenMLDB GitHub: https://github.com/4paradigm/OpenMLDB

http://www.niftyadmin.cn/n/232137.html

相关文章

《AI在文学创作中的应用》

一 引言 文学创作是人类文明的重要组成部分,表现出人类丰富的想象力和创造力。从古典文学到现代文学,文学作品不仅反映了社会的变迁和人类的情感,还影响着历史进程和未来发展。在现代社会,文学创作已经成为一个极富价值的领域,吸引了无数作家和读者。 随着人工智能(AI)…

debian 10 安装神州通用数据库 V7.0

debian 10 安装神州通用数据库 V7.01、官方下载链接2、windows客户端下载链接3、官方安装手册4、安装前准备3.1、创建安装用户3.2、以root 用户修改神通数据库安装包的所有者为shentong 用户3.3、以root 用户创建神通数据库主目录并修改所有者为shentong 用户3.4、以root 用户临…

什么是 AUTOSAR C++14?

总目录链接>> AutoSAR入门和实战系列总目录 总目录链接>> AutoSAR BSW高阶配置系列总目录 文章目录什么是 AUTOSAR C14?AUTOSAR C14 规则和偏差静态分析工具可以完全支持自动什么是 AUTOSAR C14? 它是 C 版本 14 (ISO/IEC 14882:2014) …

Python基础之装饰器

一:什么是装饰器 器:指的是工具,可以定义为函数 装饰:指的是为其他事物添加额外的东西点缀 装饰器:指的是定义一个函数,该函数是用来给其他函数添加额外的功能 二、为什么要用装饰器 开放封闭原则&#xf…

HummerRisk V1.0.0:架构全面升级,开启新篇章

HummerRisk V1.0.0发布: HummerRisk 由 SpringBoot 单体架构升级为 SpringCloud 微服务架构,性能和效率显著提升。同时新增 K8s 的检测规则组和规则实现,并优化多个模块的设计逻辑。 HummerRisk 保持高速的迭代,期待您的关注。 …

助力工业物联网,工业大数据之脚本开发【五】

01:脚本开发思路 目标:实现自动化脚本开发的设计思路分析 路径 step1:脚本目标step2:实现流程step3:脚本选型step4:单个测试 实施 脚本目标:实现自动化将多张Oracle中的数据表全量或者增量采集…

Redis复制详解

Redis复制(replica) 前言 redis复制是什么? 就是主从复制,master以写为主,slave以读为主,当master数据发生变化时,自动将新的数据异步同步到其他slave数据库。 redis复制能做什么&#xff1f…

2023年4月中国数据库排行榜:达梦厚积薄发夺探花,亚信、星环勇毅笃行有突破

青山遮不住,毕竟东流去。 生机勃勃的春天送来了2023年4月的 墨天轮中国数据库流行度排行。 本月共有263个数据库参与排名,排行榜前30的数据库中,有13个数据库崭露头角,处于上行趋势,中国数据库行业整体流行度有所增加。…