Delta Engine Introduction and Overview of How it Works -- The Databricks Blogの翻訳です。2020/6/24時点の記事です。
本日、我々は、Databricksランタイム7.0の一機能として搭載されているSpark3.0のクエリオプティマイザ、キャッシュ機構に対する最適化機能を持ち、Apache Sparkと100%の互換性があり、最新のCPUアーキテクチャを活用するベクトル化クエリエンジンであるDeltaエンジンを発表しました。これらの機能により、Delta Lakeが導入されたデータレイクに対するクエリ性能を大幅に改善することができ、お客様においてはレイクハウスアーキテクチャの導入がより容易となります。
実行性能のスケーリング
ここ数年のハードウェアにおける大きなトレンドは、CPUのクロックスピードは頭打ちになっているというものです。この理由に関してはこの記事のスコープ外ですが、ここで考えなくてはいけないのは、今存在している計算資源を活用してどのようにより良い性能を達成するのかということです。最もインパクトのある方法の一つとして、並行に処理するデータの量を増やすということが挙げられます。しかし、並列化の恩恵を得るためにはデータ処理エンジンにも並列化に即した設計が求められます。
さらに、ビジネスニーズの増加に合わせて、データチームはデータをモデリングするための時間短縮が求められています。スピードが求められるビジネスにおいて、貧弱なモデルを作ってしまうことは、さらに貧弱な予測パフォーマンスにつながってしまいます。多くの場合、これは望まれる状態ではありません。多くの企業はスピードとパフォーマンス両方を最大化する方法を見つけたいと考えています。
ハイパフォーマンスクエリ実行エンジンであるDeltaエンジン
DeltaエンジンはDelta Lakeに対するSQL問い合わせ、データフレームの操作を以下の3つのコンポーネントを活用することで高速化します:改善されたクエリオプティマイザ、クラウドオブジェクトストレージと実行レイヤの間に配置されるキャッシュレイヤ、そしてC++で記述されたネイティブのベクトル化実行エンジンです。
改善されたクエリオプティマイザに関しては、既にSpark3.0において機能拡張がなされており(コストベースのオプティマイザ、適合クエリ実行、動的ラインタイムフィルター)、より先進的な統計情報を活用することで、スタースキーマのワークロードにおいては最大18倍の性能を実現しています。
Deltaエンジンのキャッシュレイヤは、自動的にどの入力データをキャッシュするのかを自動的に選択し、NVMe SSDでの格納速度を改善できるように、よりCPUでの処理に適したフォーマットに変換します。これによりほぼあらゆるワークロードにおいて最大5倍の性能改善を実現しています。
しかし、Deltaエンジンにおける最大のイノベーションは、今データチームが直面している課題を解決するために開発した、我々がPhotonと呼ぶネイティブの実行エンジンです(エンジンの中にエンジンがあることは承知しています…)。これは、最新のクラウドハードウェアにおいて性能を最大できるようにDetabricksが完全に新たに開発した実行エンジンです。オープンなSpark APIとの互換性を維持しながらも全てのワークロードにおいて性能を改善することができました。
近い将来、別のブログ記事においてPhotonの内部をご紹介し、どのようにPhotonが動作するのか、どの程度の性能を出すのかをご説明します。
Deltaエンジンを利用するには
これら3つのコンポーネントを統合することで、Databricksで記述されるコードの改善が、データレイクにおける分析ワークロードでより高いパフォーマンスにつながっていくのか、より容易に理解できるようになると考えています。改善されたクエリオプティマイザ、キャッシュによる改善の恩恵をすぐに享受することが可能です。Photonに関しては、年末までには多くのお客様が利用可能になる予定です。
訳者コメント
2021/4/7時点でPhotonはPublic Preview(Experimental)であり、Databricks担当者に連絡いただくことで利用可能です。
お客様にDeltaエンジンをご提供できることは大変な喜びです。時間・コスト削減には当然価値がありますが、レイクハウスパターンにおけるDeltaエンジンの担う役割は、統合と簡素化を推進するために、どのようにデータチームがデータアーキテクチャを設計するのかをサポートするというものです。