みなさん、こんにちは!
AWS、Azure、Google Cloud を基盤として構築可能なデータ分析プラットフォームである Databricks。
クラウドの利点を活かした統合的なデータ分析基盤を簡単に構築できて便利ですが、課金についてわかりにくい部分があったため調査しました。
Databricks の課金の仕組みと注意点について、具体例も交えながら解説していきます。
課金の仕組み
Databricks の課金対象となる要素は大きく以下の4つです。
- Computeリソース
- ストレージ
- DBU(Databricks Unit)
- サービスプラン
それぞれについて詳しく見ていきます。
Computeリソース
Databricks では、クラウドプロバイダ(AWS、Azure、Google Cloud)の仮想マシン(VM)を使用してクラスターを構築します。
そのため、クラスターに使用する VM の種類や数、使用時間に応じて料金が発生します。
ストレージ
Databricks では Delta Lake と呼ばれる空間にデータを格納しますが、それはクラウドプロバイダのオブジェクトストレージを基盤としています。
AWS の場合は S3、Azure の場合は Azure Blob Storage、Google Cloud の場合は GCS が使用され、ストレージ料金が発生します。
DBU(Databricks Unit)
Databricks には DBU(Databricks Unit)と呼ばれる消費リソースの測定単位があります。
Compute リソースとデータ処理量に応じて異なるDBU料金が適用される形となっており、特にクラスター作成の際のオプション(シングルノード/マルチノード、Photon の使用有無など)によって大きく変わります。
DBU料金は時間単位で計算され、計算式は以下のようになります:
DBU料金 = VM稼働時間 x VM性能 x オプション
サービスプラン
Databricks には Standard、Premium、Enterprise といった料金プランがあり、それぞれのプランに応じて異なる機能と料金が設定されています。
上位プランは機能が充実し、セキュリティや管理機能も強化されていますが、そのぶんDBUあたりの料金も高くなります。
コスト例
Azure Databricks で、Standard プランで最小のクラスター構成で利用する場合について試算しました。
今回想定した条件は以下の通りです。
-
クラスター構成
・インスタンスタイプ:Standard_F4(4vCPU, 8GB RAM)
・クラスターサイズ:1ノード
・DBU:0.50 -
ストレージ
・データストレージ:Azure Blob Storage
・データ量:100GB -
DBU料金
・料金プラン:Standard
・DBU料金:$0.400 -
使用期間
・1日4時間 x 20日 = 80時間
この場合、コストは以下のようになります。 -
Computeリソース
・インスタンス料金:$0.252/時間
・稼働時間:80時間
・リソース費用:$0.252 x 80 = $20.16 -
ストレージ
・データ量:100GB
・ストレージ費用:100 x $0.0184 = $1.84 -
DBU料金
・DBU使用量:1ノード x 80時間 = 80DBU
・DBU費用:80 x $0.400 x 0.50 = $16
合計:$20.16 + $1.84 + $16 = $38
上記の例からもわかるように、大量にデータがない限りストレージ料金はほとんどかかりませんが、Compute リソースとDBU料金は大きな割合を占めます。
どちらも時間に比例して高くなるので、クラスターの自動停止設定をするなど長時間の稼働を避けることが重要です。
注意点
上記の内容も含め、Databricks の課金の注意点をまとめると以下の通りとなります。
基盤リソースの費用と Databricks の費用は別
Databricks はクラウドサービス上にデプロイされ、基盤リソースも基本的には Databricks 側で管理されますが、Databricks 自体の費用と基盤リソースの費用はしっかり別になっているため注意が必要です。
Computeリソース、ストレージ、DBU料金の合計が全体の費用となります。
デフォルト設定のまま使わない
Databricks はデフォルトの設定だと高スペックのクラスターが設定されていたり、オートスケーリングや Photon(高性能クエリエンジン)の使用が有効になっていたりとある程度パワフルな構成になっています。デフォルトのままでいいや、とリソースを作成すると高くつく可能性が高いので、適切な構成に変更して使うことを強く推奨します。
クラスターやパイプラインなど、リソース作成画面に「サマリー」としてDBUの値が表示されているので、現在のDBUを確認しながら設定するようにしましょう。
計算リソースを長時間稼働したままにしない
コスト例でも言及しましたが、計算リソースの使用時間に比例して課金額が大きくなってしまうため、自動停止設定などを利用して長時間稼働しないようにすることが大切です。
クラスターの場合、「非アクティブ状態が〇分継続したら終了」という設定が簡単にできるので、忘れず設定しておきましょう。
最後に
Databricks は簡単に導入できて便利ですが、課金システムがわかりにくく、何も考えずに使っているとコストが肥大化しやすいという落とし穴があります。
本記事の内容を参考に、Databricks を賢く利用して運用コスト最適化に繋げていただければ幸いです。