Vineyard (CNCF sandbox 项目)是脱胎于 GraphScope 底层存储、用于在复杂工作流中不同计算引擎之间进行高效数据交换的中间件,该工作的论文被数据库领域顶级学术会议 SIGMOD 2023 接收录用。
近日,CCF-A 类学术会议、数据库领域最为优秀的学术会议之一的 SIGMOD 2023(The 42nd ACM SIGMOD International Conference on Management of Data)Industrial Track 结果揭晓,致力于不同计算引擎之间进行高效数据交互的项目 Vineyard (v6d) 被成功接收!
Vineyard: Optimizing Data Sharing in Data-Intensive Analytics. Wenyuan Yu, Tao He, Lei Wang, Ke Meng, Ye Cao, Diwen Zhu, Sanhong Li, Jingren Zhou. The 42nd ACM International Conference on Management of Data (SIGMOD), Seattle, Washington, USA, June 2023.
真实的生产环境存在着大量的复杂的分析型作业:单个作业中包含若干子任务,而各个子任务可能属于不同的计算类型(例如 SQL、深度学习、图计算)。为了处理这些复杂的作业,往往将每个子任务分配到某个特定的计算引擎(例如将图计算任务分配到 GraphScope,将深度学习任务分配到 PyTorch)。为了在不同计算引擎之间进行中间结果的交换,目前通用的做法是将中间结果以文件的形式存储到外部存储中(例如本地磁盘、S3 和 OSS),但是这个过程会导致巨大的数据序列化/反序列化、I/O等开销,从而拖慢整个作业的执行时间。我们发现尽管不同的计算引擎往往对同一数据结构(例如 DataFrame、HashMap)有不同的实现,但是同一数据结构的接口则基本保持一致,而计算引擎的计算逻辑往往只关注数据结构提供的接口而非接口的具体实现。
基于这个观察,我们设计了 Vineyard (v6d),它允许用户向 v6d 注册自己的数据结构,在计算引擎与 v6d 中的数据结构进行对接后,计算引擎产生的中间结果以高层的 object 分享,使得计算引擎可以通过内存映射(memory mapping)和方法共享(method sharing)高效地进行数据分享。同时,为了降低计算引擎与 v6d 的集成难度,v6d 针对跨编程语言的计算引擎进行了针对性的优化。在真实数据集和作业中,v6d 与传统的通过文件和外部存储进行数据交换的方案相比,能够取得最高 68.4 倍的加速。
Vineyard 目前已经开源,并成为 CNCF sandbox 项目,点击此处即可获得 Vineyard 的进一步介绍和详细的文档以及源码。