Skip to main content
QUICK REVIEW

[论文解读] Cuttlefish: A Lightweight Primitive for Adaptive Query Processing

Tomer Kaftan, Magdalena Bałazińska|arXiv (Cornell University)|Feb 26, 2018
Advanced Bandit Algorithms Research参考文献 59被引用 11
一句话总结

Cuttlefish 是一种轻量级、自适应的查询处理原语,利用 Thompson sampling 多臂赌博机算法,在 Apache Spark 中动态选择查询执行期间最快的物理算子变体。与 Spark SQL 的优化器相比,其吞吐量最高可提升 7.5 倍,并且即使次优算子慢至 105 倍,仍能达到 72–99% 的 Oracle 性能。

ABSTRACT

Modern data processing applications execute increasingly sophisticated analysis that requires operations beyond traditional relational algebra. As a result, operators in query plans grow in diversity and complexity. Designing query optimizer rules and cost models to choose physical operators for all of these novel logical operators is impractical. To address this challenge, we develop Cuttlefish, a new primitive for adaptively processing online query plans that explores candidate physical operator instances during query execution and exploits the fastest ones using multi-armed bandit reinforcement learning techniques. We prototype Cuttlefish in Apache Spark and adaptively choose operators for image convolution, regular expression matching, and relational joins. Our experiments show Cuttlefish-based adaptive convolution and regular expression operators can reach 72-99% of the throughput of an all-knowing oracle that always selects the optimal algorithm, even when individual physical operators are up to 105x slower than the optimal. Additionally, Cuttlefish achieves join throughput improvements of up to 7.5x compared with Spark SQL's query optimizer.

研究动机与目标

  • 解决在多样化、复杂且不断演化的数据处理工作负载中选择最优物理算子实现的挑战。
  • 克服为现代数据处理框架中每个新算子手动设计成本模型和优化规则的不切实际性。
  • 实现无需手动调整超参数或显式规则的自动、在线物理算子调优。
  • 在保持低运行时开销和可扩展性的前提下,支持分布式、无共享环境。
  • 通过学习算子性能如何随数据特性与工作负载特征变化,实现上下文感知调优。

提出的方法

  • 提出 Cuttlefish 作为一种通用的自适应查询处理原语,其操作粒度为单个物理算子变体。
  • 采用 Thompson sampling(贝叶斯多臂赌博机算法),在查询执行期间平衡不同物理算子实现的探索与利用。
  • 支持非上下文和上下文赌博机学习,其中算法基于输入数据特性学习成本模型以指导选择。
  • 设计调优器计算轻量且高效,即使在分布式、无共享集群中也能将运行时开销降至最低。
  • 通过在集群节点间共享赌博机学习统计信息,实现跨机器学习,提升收敛速度与适应能力。
  • 无缝集成至 Apache Spark,支持对图像卷积、正则表达式匹配和关系连接等算子的自适应调优。

实验结果

研究问题

  • RQ1能否设计一种轻量级、通用的原语,在无需手动设计规则或成本模型的前提下,自动选择查询执行期间最快的物理算子变体?
  • RQ2基于 Thompson sampling 的赌博机学习在跨多样化工作负载和硬件配置下动态选择最优算子实现方面效果如何?
  • RQ3与静态查询优化器(如 Spark SQL 的默认优化器)相比,自适应调优在动态或不可预测工作负载下能将吞吐量提升多少?
  • RQ4系统能否学习并利用基于输入数据特征预测性能的上下文成本模型?
  • RQ5该方法在分布式、无共享环境中如何扩展,引入了何种运行时开销?

主要发现

  • 即使次优实现慢至 105 倍,基于 Cuttlefish 的自适应算子仍能达到所有已知最优算法(即 Oracle)吞吐量的 72–99%。
  • 与 Spark SQL 的默认查询优化器相比,该系统将连接操作的吞吐量最高提升了 7.5 倍,展示了在真实工作负载中的显著性能提升。
  • Thompson sampling 有效实现了探索与利用的权衡,且无需手动调整超参数,使该方法在多种算子上均具实用性。
  • 自适应调优机制在分布式无共享环境中高效扩展,运行时开销极低,并实现了有效的跨节点学习。
  • 上下文赌博机学习使系统能够建模算子性能如何随数据特性变化,从而实现更智能、数据感知的物理算子选择。
  • Cuttlefish 在支持分布式执行、避免推测性资源浪费以及实现跨节点学习方面优于先前的在线自动调优系统(如 SiblingRivalry 和 REX),表现更优。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。