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 は、Apache Spark におけるクエリ実行中に、Thompson サンプリングを用いたマルチアームバンディットを用いて、動的に最速の物理的オペレータバージョンを選択する軽量で適応的なクエリ処理プリミティブである。Spark SQL の最適化子よりも最大 7.5× のスループット向上を達成し、最適でないオペレータが最大 105× 遅くても、オラクル性能の 72–99% を達成する。

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.

研究の動機と目的

  • 多様で複雑かつ進化を続けるデータ処理ワークロードに対して、最適な物理的オペレータ実装を選択する課題に対処すること。
  • 現代のデータ処理フレームワークにおける新しいオペレータごとに、コストモデルや最適化ルールを手動で設計することは現実的でないという課題を克服すること。
  • 手動でのハイパーパramータチューニングや明示的な規則を必要とせず、自動的かつオンラインで物理的オペレータをチューニングすること。
  • ランタイムのオーバーヘッドを低く保ちながらスケーラビリティを維持する分散型、共有リソースなし環境をサポートすること。
  • データプロパティやワークロード特性に応じてオペレータのパフォーマンスがどのように変化するかを学習することで、文脈に応じたチューニングを可能にすること。

提案手法

  • 個々の物理的オペレータバージョンのレベルで動作する、適応的クエリ処理のための汎用的プリミティブとして Cuttlefish を導入する。
  • 探索と活用のバランスを取るために、ベイジアンマルチアームバンディットアルゴリズムの Thompson サンプリングを用いて、クエリ実行中の異なる物理的オペレータ実装を評価する。
  • 非文脈的および文脈的バンディット学習をサポートし、入力データプロパティに基づいてコストモデルを学習することで選択をガイドする。
  • チューナーを計算的に軽量かつ効率的なものに設計し、分散型、共有リソースなしクラスタでもランタイムのオーバーヘッドを最小限に抑える。
  • クラスタ内のノード間でバンディット学習統計を共有することで、クロスマシン学習を可能にし、収束性と適応速度を向上させる。
  • Apache Spark にシームレスに統合され、画像畳み込み、正規表現マッチング、リレーショナルジョインなどのオペレータの適応的チューニングを可能にする。

実験結果

リサーチクエスチョン

  • RQ1手動での規則やコストモデルの設計を必要とせず、クエリ実行中に最速の物理的オペレータバージョンを自動的に選択できる、軽量で汎用的なプリミティブを設計できるか?
  • RQ2Thompson サンプリングに基づくバンディット学習は、多様なワークロードやハードウェア構成において、最適なオペレータ実装を動的に選択するのにどの程度有効か?
  • RQ3特に動的または予測不能なワークロード下で、静的クエリ最適化子(例:Spark SQL のデフォルト最適化子)と比較して、適応的チューニングがスループットにどの程度向上効果をもたらすか?
  • RQ4入力データ特性に基づいてパフォーマンスを予測する文脈的コストモデルを学習・活用できるか?
  • RQ5分散型、共有リソースなし環境におけるこのアプローチのスケーラビリティはどの程度か?また、導入するランタイムのオーバーヘッドはどの程度か?

主な発見

  • Suboptimal な実装が最大 105× 遅くても、Cuttlefish を用いた適応的オペレータは、常に最適なアルゴリズムを選び続ける「すべてを知っているオラクル」のスループットの 72–99% を達成する。
  • Spark SQL のデフォルトクエリ最適化子と比較して、ジョインのスループットが最大 7.5× 向上し、実世界のワークロードにおいて顕著なパフォーマンス向上を示す。
  • Thompson サンプリングにより、ハイパーパramータの手動チューニングを必要とせず、探索と活用のバランスを効果的に取ることができ、さまざまなオペレータに実用的である。
  • 分散型、共有リソースなし環境でも、最小限のランタイムオーバーヘッドで効率的にスケーリングされ、効果的なクロスマシン学習が可能である。
  • 文脈的バンディット学習により、オペレータのパフォーマンスがデータプロパティにどのように依存するかをモデル化でき、より知的でデータに依存する物理的オペレータ選択が可能になる。
  • Cuttlefish は、分散実行をサポートし、予期しないリソースの浪費を回避し、ノード間学習を可能にする点で、SibilingRivalry や REX などの先行オンライン自動チューナーよりも優れている。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。