Databricks の料金体系についてまとめてみた

記事タイトルとURLをコピーする

Databricks では DBU (Databricks Unit) という独自の単位で課金されます。この記事では、Databricks on AWS の料金体系について整理し、実際に利用する際の考慮事項をまとめてみました。

前提

今回の記事では以下を前提としています。

  • Databricks on AWS
  • 東京リージョン
  • Premium プラン

まずは Databricks のアーキテクチャを理解する

Databricks は コントロールプレーンコンピュートプレーン の2つの領域から構成されます。

https://docs.databricks.com/aws/ja/getting-started/overview

コントロールプレーンには Databricks のアカウント内で管理されるバックエンドサービスが含まれます。Databricks SQL のクエリ、ノートブックのコマンド、その他ワークスペースの設定が暗号化された状態で保持されます。

コンピュートプレーンはデータを処理するための実行環境です。クラシックコンピュートプレーンとサーバーレスコンピュートプレーンの2種類があり、クラシックの場合は自身の AWS アカウント内に、サーバーレスの場合は Databricks アカウント内に実行のためのリソースがデプロイ・管理されます。

このコンピュートプレーンが Databricks アカウントにあるか、自身の AWS アカウントにあるかによって料金体系が異なります。サーバーレスコンピュートプレーンを利用する場合は、Databricks アカウント内のリソースを使用するため DBU の課金のみですが、クラシックコンピュートプレーンを利用する場合は、自身の AWS アカウント内にリソースがデプロイされるため AWS のインスタンス料金も発生します。

DBU (Databricks Unit) とは

DBU (Databricks Unit) とは Databricks が定義する時間あたりの処理能力の単位です。 秒単位で課金され、「料金プラン」・「コンピュートタイプ」・「コンピュートのスペック」によって DBU の単価と1時間あたりの消費量 が決まります。

DBU の単価はコンピュートタイプによって決まる

DBU の単価は使用するコンピュートタイプによって決まります。

Databricks で利用できる主なコンピュートの種類と料金例を表にまとめました。*2

コンピュートタイプ 用途・特徴 料金 (1DBU あたり) AWS 料金の有無
汎用コンピュート (Classic All-Purpose) Databricks ノートブック の実行など $0.55 ⚪︎
サーバーレスコンピュート (Interactive Serverless) (汎用コンピュートと同等の機能) $0.83 ×
ジョブクラシッククラスタ Lakeflow Jobs の実行 $0.15 ⚪︎
ジョブサーバーレス (ジョブクラシッククラスタと同等の機能) $0.39 ×
SQL Classic Databricks SQL の実行 $0.22 ⚪︎
SQL Pro SQL Classic の機能に加えて マテリアライズドビューGenie (対話型 AI) が使用可能 $0.78 ⚪︎
SQL Serverless (SQL Pro と同等の機能) $1.00 ×
インスタンスプール コンピュートの起動を高速化するために使用。サーバーレスの場合不要。 Amazon EC2 の料金が適用*3 ⚪︎

サーバーレスタイプの方が高く見えますが、クラシックタイプの場合は DBU 料金に加えて AWS のインスタンス料金も発生する点にご注意ください。ここに載せたもの以外にも料金が発生するものもあるので、詳細は こちらのドキュメント をご参照ください。

DBU の消費量はコンピュートのスペックによって決まる

例えば、汎用コンピュート (Classic All-Purpose) では以下のような DBU 消費量となり、コンピュートのスペックが上がるほど DBU の消費量も増加します。

・m4.large (2vCPU、8GiB) : 0.400 DBU/h
・m4.2xlarge (8vCPU、32GiB) : 1.500 DBU/h
・m4.4xlarge (16vCPU、64GiB) : 3.000 DBU/h
・m4.16xlarge (64vCPU、256GiB) : 12.000 DBU/h

コンピュートタイプとスペックの対応は 料金計算ツール で調べると分かりやすいです。

サーバーレスを使うか否か

個人的な見解ですが、「データ処理の実行環境が自身の AWS 環境内である必要がある」「事前に使用料金を厳密に見積もっておきたい」などの要件がない限りはサーバーレスコンピュートを利用することをおすすめします。

Databricks に限った話ではありませんが、スケーリングによって処理時間が短くなることで結果的に実行コストがスケーリング前とそれほど変わらなかったり低くなることも多いです。同じコストなら短時間で処理できる方がいいですよね。サーバーレスなら負荷に応じて最適なリソースを自動で調整してくれるので運用の手間も省けます。

また、サーバーレスであればインスタンスプール (起動時間短縮のためにあらかじめインスタンスを起動しておく機能) も不要で迅速に起動したり、利用料金の発生箇所が Databricks 内だけで完結することもメリットですね。

以下は Databricks SQL ウェアハウスの例ですが、クラスターの起動時間とクエリ実行時間の観点やトータルコストの観点からもサーバーレスが適していることが紹介されています。*4*5

https://www.databricks.com/blog/2021/08/30/announcing-databricks-serverless-sql.html

https://www.databricks.com/blog/best-practices-cost-management-databricks

料金計算の例

参考程度に、実際の利用ケースを想定した料金計算例を載せておきます。 ここに載せているのはあくまでコンピュート料金のみで、EC2 にアタッチする EBS ボリュームや Elastic IP などの料金は含まれていません。

ケース1 : 小規模開発チームで汎用コンピュートを利用してノートブックを実行

  • ユースケース : 開発者がノートブックでデータ分析・検証を行う
  • コンピュートタイプ : 汎用コンピュート (Classic All-Purpose)
  • スペック : m4.2xlarge (8 vCPU, 32 GiB) × 1台
  • 稼働時間 : 1日2時間、週5日(月20日)
項目 計算式 金額
Databricks DBU 料金 1.500 DBU/h × $0.55/DBU × 1台 × 2h × 20日 $33/月
Amazon EC2 料金 $0.129/h × 1台 × 2h × 20日 $5.16/月
$33 + $5.16 $38.16/月

ケース2 : 小規模開発チームでサーバーレスコンピュートを利用してノートブックを実行

  • ユースケース : 開発者がノートブックでデータ分析・検証を行う
  • コンピュートタイプ : サーバーレスコンピュート (Interactive Serverless)
  • スペック : Databricks が自動で調整のため見積もりが難しいものの、例として m4.2xlarge を平均として計算
  • 稼働時間 : 1日2時間、週5日(月20日)
項目 計算式 金額
Databricks DBU 料金 1.500 DBU/h × $0.83/DBU × 1台 × 2h × 20日 $49.8/月
Amazon EC2 料金 サーバーレスのため不要 なし
$49.8 + なし $49.8/月

ケース3 : 本番 ETL ジョブをジョブクラシッククラスタで実行

  • ユースケース : 定期的に実行される本番レベルの ETL ジョブ
  • コンピュートタイプ : ジョブクラシッククラスタ
  • スペック : m5.12xlarge (48 vCPU, 192 GiB) × 1台
  • 稼働時間 : 1日1時間、毎日(月30日)
項目 計算式 金額
Databricks DBU 料金 8.230 DBU/h × $0.15/DBU × 1台 × 1h × 30日 $37.04/月
Amazon EC2 料金 $2.976/h × 1台 × 1h × 30日 $89.28/月
$37.04 + $89.28 $126.32/月

ケース4 : 本番 ETL ジョブをジョブサーバーレスで実行

  • ユースケース : 定期的に実行される本番レベルの ETL ジョブ
  • コンピュートタイプ : ジョブサーバーレス
  • スペック : Databricks が自動で調整のため見積もりが難しいものの、例として m5.12xlarge を平均として計算
  • 稼働時間 : 1日1時間、毎日(月30日)
項目 計算式 金額
Databricks DBU 料金 8.230 DBU/h × $0.39/DBU × 1台 × 1h × 30日 $96.29/月
Amazon EC2 料金 サーバーレスのため不要 なし
$96.29 + なし $96.29/月

ストレージ料金について

Databricks では、コンピュート料金 (DBU) に加えてストレージ料金も発生します。*6

Unity Catalog のマネージドストレージでは、テーブルやデータファイルを Databricks が管理する S3 バケットに格納できます。

デフォルトストレージを使用する場合、保存データ量とトランザクションの2つの要素に対して料金が発生し、それぞれ DSU (Databricks Storage Unit) に換算されます。

ストレージ使用量の DSU 換算

1 GB/月 = 1 DSU の換算です。

API リクエスト(トランザクション) の DSU 換算

  • 1,000回の PUT、COPY、POST、LIST リクエストごとに、0.2174 DSU として換算されます。
  • 1,000回の GET、SELECT、および他の全てのリクエストは、0.0174 DSU として換算されます。

外部ストレージ

自身の AWS アカウント内の S3 バケットを Databricks から利用する場合は、Amazon S3 の料金が適用されます。その場合は Unity Catalog の外部ロケーション機能を使用してアクセスします。

その他

料金計算ツール

Databricks では、料金計算のためのツールが用意されているので、ぜひこちらもご活用ください。

www.databricks.com

※ こちらのツールでは Databricks の料金のみで、EC2 インスタンスなどの AWS サービスの料金は含まれていないためご注意ください。AWS の料金も含めた総額を計算する場合は AWS Pricing Calculator も併用することをおすすめします。

利用料金の確認方法

現在のアカウントの利用料金は 使用状況ダッシュボード を利用して確認できます。

[使用状況] ページにアクセスするには、アカウント管理者として アカウント コンソール に移動し、[ 使用状況 ] アイコンをクリックします。

AWS Marketplace 経由で Databricks に登録すると AWS の請求と一本化できる

AWS Marketplace 経由で Databricks を利用すれば、AWS の請求書に Databricks の利用料金も含まれるため Databricks の料金と AWS の料金を一本化できます。

手順については下記ブログにて紹介していますので、こちらもぜひご覧ください。 blog.serverworks.co.jp

さいごに

Databricks 自体のアーキテクチャや DBU の仕組みを理解するのが少し大変でしたが、改めてこうやってまとめてみると料金体系の全体像が自分の中でも整理できてよかったです。

この記事が Databricks の導入に悩む方の参考になれば幸いです。

香取 拓哉 (記事一覧)

2023年度新卒入社
データドリブンな人間を目指しています
好きな食べ物は芽ねぎ