Databricks ワークスペースは、1 つの独立した Databricks 環境を提供します。 そのため、要件によっては複数のワークスペースを同時に作成・運用するケースもあります。 こうした状況では、Databricks ワークスペースを Code として管理(IaC)し、自動化することで運用がスムーズになります。
Databricks では、運用現場で求められる機能をツールとして提供する Labs Project の一環で、Databricks Terraform Provider を公開しています。 このドキュメントでは、Terraform を用いて AWS 上に Databricks ワークスペースを構築する方法を説明します。
AWS の Databricks デプロイメントの構成
AWS 上での Databricks は、以下の 2 つのレイヤで構成されます。
- Control Plane: クラスタ管理、ノートブック、ジョブ管理、Hive メタストアなど管理系のリソースが含まれる。Databricks 管理の AWS アカウント内に配置。
- Data Plane:クラスタ実体(EC2 インスタンス)、処理実行結果、Spark/Delta の処理対象データストレージ(S3 バケツ)等のリソースが含まれる。ユーザー管理の AWS アカウント内に配置。
ワークスペースを作成・デプロイするには、
- ユーザーの AWS アカウントでクロスアカウント IAM Role を作成
- 上記の IAM role を Databricks 側に登録(委譲)
- ユーザー AWS アカウント内に VPC/Subnet などのネットワークを構成
- DBFS ルートとして使用する S3 バケツの作成・ポリシーの作成
などが必要になります。
詳細は、Databricks architecture overview をご参照ください。
これらの設定を Terraform でコード化して運用・ 管理することが可能です。
必要な環境
- AWS CLI の実行環境
- AWS Credential(通常は ~/.aws/credentials に作成される。上記の AWS CLI の実行のため)
- Databricks Owner Account:
Databricks Console(accounts.cloud.databricks.com)にログインできるユーザー名/パスワード - Terraform 実行環境
使用方法
Terraform テンプレートのダウンロード
Terraform のテンプレートをダウンロードします。
デプロイに関するパラメータの設定
Variable.tf
にデプロイする際の設定値を変数として定義してあります。
Variable.tf
aws_connection_profile:
AWS CLI を使用する際の Credetial の profile 名- >aws_region:構築する AWS Region
cidr_block:
構築する際の VPC に使用するネットワーク CIDRread_write_s3_buckets:Databricks
と連携させる S3 バケツのリスト(Read、Write)read_only_s3_buckets:Databricks
と連携させる S3 バケツのリスト(Read オンリーuser_prefix:
ワークスペースのリソース名で使うプレフィックス文字列
ファイルを編集して、適宜設定していきます。
クレデンシャルファイルの準備
続いて、secret.tfavrs
のテンプレートから以下の Databricks のアカウント情報を設定ファイルを作成していきます。 パスワードなどを含むファイルになりますので、取り扱いには注意してください。
- databricks_account_username:Databricks Console にログインする際のメールアドレス
- databricks_account_password:Databricks Console にログインする際のパスワード
- databricks_account_id:Databircks アカウントの ID(Databricks Console から確認できます)
Databricks のアカウント ID は下記のように Console 画面の左下メニューから確認できます。
ワークスペースの作成
以上が設定が必要な項目になりますので、移行は Terraform を実行していきます。
Terraform の初期化(初回のみ)
問題なければ Terraform を実行して環境を構築します。 この実行によって AWS 上にDatabricks のワークスペースが構築されます。
ここで作成した各種リソースは Databrciks Console や AWS Console の UI 上からも確認可能です。
ワークスペースの削除
環境を削除するには以下を実行します(実行には注意してください)。
説明
リソース
以下のリソースを構築します(手動でデプロイする場合の順に記載しています)。
- Cross Account IAM Role
- S3 Root Bucket
- Custom VPC
- Workspace
- Bucket for Data writing
- Instance Profile for S3 Access from Clusters
詳細はコードをご参照ください。