Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Databricks: Photon Performance Deep Dive

Masaki Takeda
December 18, 2021

Azure Databricks: Photon Performance Deep Dive

Masaki Takeda

December 18, 2021
Tweet

More Decks by Masaki Takeda

Other Decks in Technology

Transcript

  1. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Find new value on Azure Azure Databricks “Photon” Performance Deep Dive 15:35-16:05 (30min) Microsoft Japan Data&AI Cloud Solution Architect Masaki Takeda
  2. 日本マイクロソフト株式会社 データ & クラウド AI アーキテクト統括本部 Data & AI Cloud

    Solution Architect (CSA) 武田 雅生 (Masaki Takeda) Mail: [email protected] 【直近の経歴】 ・前職:日本オラクル株式会社 データベース・コンサルタント Oracle Database / Exadata / Cloud 領域のソリューション提案・アーキテクト支援 ・現職:日本マイクロソフト株式会社 Data&AI CSA Azure BigData / DWH / DataLake / Analytics 領域のアーキテクト支援 ※最近は Azure Data Landing Zone に興味を持っています 自己紹介 2 LinkedIn
  3. Agenda 3 • Azure Databricks Photon の Technical Overview •

    Azure Databricks ETL: Photon Runtime Deep Dive • Azure Databricks Data Scientist (SQL Analytics): Databricks SQL Deep Dive
  4. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Find new value on Azure Azure Databricks Photon Technical Overview
  5. Photon とは 5 Delta Engine Query Optimizer Native Execution Engine

    Photon Caching SQL Spark DataFrame Koalas OSS Spark に比べて 20倍 高速化 • Photon は C ++ で記述された ネイティブのベクトル化エンジン • Spark API と互換性があり、最新の CPU アーキテクチャと Delta Lake 機能を活用し、性能を 20 倍に向上 ✓Vectorization: exploit data-level parallelism and instruction-level parallelism ✓Optimize for modern structured and semi-structured workloads Delta Engine: High Performance Query Engine for Delta Lake | Keynote Spark + AI Summit 2020
  6. なぜ Photon に注目しているのか 従来とは一線を画すほどの性能改善 (コスト効果) を得られる可能性が高い。 他 Spark サービスには無い、Worker Nodes

    (CPU/MEM/SSD) を有効活用できるエンジン。 6 Announcing Photon Public Preview: The Next Generation Query Engine on the Databricks Lakehouse Platform - The Databricks Blog
  7. How Photon works? Photon 有効化されたランタイムは Hybrid Execution Model (Spark/Photon) で稼働。

    ユーザーには透過的。 7 Announcing Photon Public Preview: The Next Generation Query Engine on the Databricks Lakehouse Platform - The Databricks Blog クライアントが特定のクエリまたはコマンドを Spark ドライバ ノードに送信すると、そのクエリまたはコマンドが解析され、 Catalyst Optimizer は Photon が関与していない場合と同様に分析、 計画、および最適化を行います。 PhotonをDatabricks Runtime で有効化すると、Runtime Engine が Physical Planを介して、Photonで実行できるパーツを決定します。 たとえば、SORT MERGE JOINをHASH JOINに変更するなど、 Physical Plan に対して部分的なPhotonによる最適化の変更を加え ることができますが、順序を含むPhysical Plan の全体的な構造は 変わりません。Photon はまだ Spark が行うすべての機能をサ ポートしていないため、1 つのクエリは Photon に部分的な処理 を実行させ、残りは Spark で実行させます。この Hybrid Execution Model は、ユーザーに対して完全に透過的です。 クエリ プランは、データの特定パーティションに対して動作す る Worker Node 上のスレッドで実行されるTaskと呼ばれる分散 実行のアトミック単位に分割されます。Photonエンジンがその 仕事をするのはこのレベルです。Spark の Stage Code Gen 全体を ネイティブエンジン実装に置換できると考えることができます。 Photon ライブラリは JVM にロードされ、Spark と Photon はJNI を介して通信し、データ ポインタをヒープ外メモリに渡します。 Photonはまた、Mixed Plan で適切にSparkと連携したうえで必要 に応じて Local SSD に Memory から Spill できように、Sparkの Memory Managerと密に統合されています。 公開プレビューリリースでは、Photon は多くのデータ型、演算 子、式をサポートします。詳細については、ドキュメントの Photonの概要を参照してください。
  8. Photon のアドバンテージ 2021/12/18 時点 8 Photon - Azure Databricks |

    Microsoft Docs • Parquet / Delta テーブルに対する SQL / Dataframe 操作のサポート • 大規模 (>100GB) データの集計・結合処理の高速化 • Photon は Delta Caching との併用が可能 • Databricks Runtime 9.1 LTS 以上で Photon は既定で有効 • Scan Parquet/Delta の性能改善 • 特に many small files (256MB未満) & カラム数の多いテーブル • Delta/Parquet への書き込み処理改善 (UPDATE, DELETE, MERGE INTO, INSERT, and CTAS) • 特にカラム数の多い (100+) テーブル (2-4倍の改善見込み) • Sort-Merge Join が自動的に Hash-Join に変換 (Optimizing) される • 大規模テーブル同士の JOIN によるメモリ圧迫は、Spilling Hash join 機構で回避する仕様 • (※ Sort-Merge join は Hash table を in memory で作成しないが、データ全体を Spill してしまう傾向) • (※ そもそも片方のテーブルが小さい場合、AQE により Sort-Merge Join から Broadcast Join にクエリ実行途中に変換される傾向) (※ Databricks Runtime 7.3 LTS 以降、AQE (Adaptive Query Execution) 自体は規定で有効) Databricks Runtime-Azure Databricks | Microsoft Docs アダプティブクエリ実行-Azure Databricks | Microsoft Docs
  9. Photon の制限事項 2021/12/18 時点 9 • Databricks Runtime での未サポート領域 •

    Parquet / Delta テーブルのみ Photon の操作対象 (read/write) • Window 演算子とソート (並べ替え) 演算子はサポートされていない • UDF はサポートされていない • Databricks ML Runtime での Photon 利用は、サポートされていない • Spark Structured Streaming での Photon 利用は、サポートされていない • 少量データに対して、且つ実行時間の短いクエリ (2秒未満) に対する性能改善効果は限定的 Photon - Azure Databricks | Microsoft Docs
  10. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Find new value on Azure Azure Databricks for Data Engineer (ETL) Photon Runtime (New Databricks Runtime)
  11. Photon の大規模データ処理時のアドバンテージ Hash Spilling 実装 (ネイティブレベルで Memory / Local SSD

    を有効活用・併用できる) 12 • Spilling for Very Large input table (※ Very Large かどうかはデータサイズとクラスタのメモリサイズに依存) • 利用可能なクラスタ上のメモリサイズを超える入力を処理するために、 中間状態 (Internal hash table partition) のデータを部分的に Local SSD に Spilling (Write) できる • Hash Shuffle / Hash Aggregation / Hash Join (Hash系) に対して機能し、 大規模JOIN処理を 2-5倍性能改善出来る想定
  12. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Find new value on Azure Azure Databricks for Data Scientist (SQL Analytics) Databricks SQL
  13. Databricks SQL で実現する SQL-BI Analytics 17 マルチクラスターの容易な設定・利用 Lakehouse SQL-BI 用に性能改善された

    Endpoint Multi-Cluster (Databricks Photon Runtime + Caches) Open and Reliable Data Lake as our Foundation Data Catalog 機能 (データガバナンス) Curated Data Structured, Semi-Structured, and Unstructured Data Analyst & Admin Experience SQL Endpoint Photon Engine Caches (Delta / Result) Analyst & Admin Experience SQL Endpoint Photon Engine Caches (Delta / Result) Unity Catalog Databricks SQL Dashboard Power BI
  14. その他 Databricks SQL 性能改善機能 Providing fast and predictable performance for

    all workloads 18 Async I/O for faster small files and cold read cases 多量小規模ファイル クエリ性能改善 Many small files Shaving system overhead off and improving QpH by 3X 同時実行数 改善 Small queries Cloud fetch to improve fetch throughput 結果セット キャッシュの対応 BI Results Retrieval Dual queue to avoid large queries blocking small ones BI 混在ワークロード 対応 Mixed small/large
  15. Databricks SQL: クエリキャッシュの種類 (※一部、構成仕様を Databricks HQ Product Team に確認中) 19

    How to Extract Large Query Results Through Cloud Object Stores - The Databricks Blog クエリキャッシュ-Azure Databricks - Databricks SQL | Microsoft Docs Data Lake Storage Worker Nodes Driver Node Local SSD DBFS
  16. Databricks SQL: クエリキャッシュの種類 (※一部、構成仕様を Databricks HQ Product Team に確認中) 20

    How to Extract Large Query Results Through Cloud Object Stores - The Databricks Blog クエリキャッシュ-Azure Databricks - Databricks SQL | Microsoft Docs 1. Databricks SQL UI Cache クエリとダッシュボードのユーザーごとのキャッシュ (on DBFS) (Databricks SQL Dashboard) (本 Cache が存在する場合、SQL Endpoint 起動なくとも Dashboard 表示) 3. Query Results Caching SQL Endpoint を介したすべてのクエリに対するクエリ結果のキャッシュ (Hybrid-Fetch Mechanism) ・小さなクエリ結果セット (1MB 未満) → On Cluster (Driver Node) ・大きなクエリ結果セット (1MB 以上) → On Cloud Storage 2. Delta Caching SQL Endpoint を介してクエリを実行するために Cloud Storage から読み取られるデータのLocal SSD Cache Data Lake Storage Worker Nodes Driver Node Local SSD DBFS
  17. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Find new value on Azure まとめ
  18. まとめ 23 Curated Data (Gold) Analyst & Admin Experience SQL

    Endpoint Photon Engine Caches (Delta / Result) Analyst & Admin Experience SQL Endpoint Photon Engine Caches (Delta / Result) Photon は性能観点で、大規模 Lakehouse Production のキーとなるソリューションの1つ。 Data Landing Zone における、Ingest Processing 領域、及び Data Analytics Products 領域での活用が適切と想定。 Analyst & Admin Experience Delta Lake Performance Tuning Photon Engine Caches (Delta / Result) Unity Catalog Data Engineering (ETL) [Photon Runtime] SQL Analytics [Databricks SQL] Curated Data (Silver) Raw Data (Bronze)
  19. ク ラ ウ ド ス ケ ー ル 分 析

    で デ ー タ 活 用 に 無 限 の 可 能 性 を Thank you Find new value on Azure