1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

みなさん、こんにちは!

Azure Databricksワークスペースを移行したいと思ったとき、具体的な手順がよくわからなかったので調べてみました。

本記事では、ワークスペースの移行手順と注意点についてまとめます。

移行手順

Databricks Terraform Provider インストール

AzureでCloud Shellを開き、以下のコマンドで「Databricks Terraform Provider」のインストールを行います。

mkdir databricks-migration && cd databricks-migration
curl -OL https://github.com/databricks/terraform-provider-databricks/releases/download/v1.84.0/terraform-provider-databricks_1.84.0_linux_amd64.zip
unzip terraform-provider-databricks_1.84.0_linux_amd64.zip

※今回は検証のためCloud Shellを利用しましたが、Cloud Shellはストレージが永続化されない(現在のセッションのみ)ため、本格的に実行する場合はローカル環境等にAzure CLIをインストールして実行してください。

以下のコマンドを実行し、バージョン情報が表示されればOKです。

./terraform-provider-databricks_v1.84.0

image.png

アクセストークン生成

「Settings」→「Developer」→「Access tokens」から PAT(Personal Access Token)を取得します。
image.png
image.png

エクスポート

以下のコマンドでワークスペースのエクスポートを実行します。

./terraform-provider-databricks_v1.84.0 exporter

Databricks のワークスペースURLとPATの入力を求められるため、それぞれ入力します。
image.png

作成対象のリソースを確認されるため、必要なものは「y」、不要なものは「n」を入力します。
image.png

エクスポートが完了すると、各リソースに対応する.tfファイルが作成されます。
image.png

サービスプリンシパル作成

移行作業用のサービスプリンシパルを作成します。

Azure Databricksを開き、右上のユーザアイコンから「Settings」→「Identity and access」で「Service principals」の「Manage」をクリックします。
image.png

「Add service principal」→「Add new」をクリックし、サービスプリンシパルの新規作成を行います。
Management は「Databricks managed」とし、適切な名前を設定して「Add」をクリックします。
image.png

サービスプリンシパルが作成されたら、「Secrets」で「Generate secret」をクリックし、シークレットを作成します。
image.png

表示されたポップアップに記載のシークレットとクライアントIDを控えておきます。
※シークレットはこの一回しか表示されないためご注意ください。
image.png

Terraformファイル修正

エクスポートしたままでは認証情報が設定されていなかったり、不備があったりするため修正を行います。

はじめに、databricks.tf の中身を以下のように修正します。

qiita.rb
terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
    }
    databricks = {
      source  = "databricks/databricks"
    }
  }
}

provider "databricks" {
  host = "https://adb-xxxxxxxxxxxxxxxx.x.azuredatabricks.net"
  client_id = "<CLIENT_ID>"
  client_secret = "<CLIENT_SECRET>"
}

CLIENT_IDCLIENT_SECRETは上記で取得した値を入れます。

以下のコマンドを実行し、terraform構成を初期化します。

terraform init

各.tfファイルの修正を行い、問題がないか確認します。

terraform plan

問題がなければ、以下のコマンドで変更を適用します。

terraform apply

Unity Catalog について

Unity Catalog は特定のワークスペースに依存しない形で存在しているリソースであるため、移行先のワークスペースを新たに割り当てることで既存の Unity Catalog を引き続き利用することができます。

アカウントコンソールにアクセスし、「カタログ」を開きます。
対象の Unity Catalog のリンクをクリックし、「ワークスペース」タブで「ワークスペースに割り当てる」をクリックします。
image.png

移行先のワークスペースを選択し、「割り当てる」をクリックして有効化します。
image.png

移行先ワークスペースを開くと、「自組織」に Unity Catalog が追加されており、以前のワークスペースと同様にテーブル等にアクセスすることができます。
image.png

うまくエクスポートできない場合

移行ツールでうまくエクスポートできない場合、ワークスペースの機能でフォルダ単位やユーザ単位でデータをダウンロードし、移行先ワークスペースにインポートすることが可能です。

以下のように「Share」の左側にあるメニューボタンを押し、「Download as」→「DBC archive」をクリックすると「DBC archive」形式でユーザのデータをまとめてダウンロードすることができます。
image.png

ただし、ダウンロードの対象となるデータはフォルダとノートブックのみであり、SQLエディタで保存したクエリやその他のファイルは含まれないためご注意ください。

注意点

Databricks Terraform Provider のエクスポートは「Experimental」と表示されている通り、必ずしも思い通りにエクスポートされるわけではないため注意が必要です。

実際、今回のエクスポートではノートブックとフォルダが1人分の一部だけしか.tfファイルに記載されておらず、自分で追加しなければなりませんでした。あくまで補助ツールとして捉え、Terraform をちゃんと理解したうえで使う必要があります。

まとめ

Azure Databricksワークスペースの移行方法についてご紹介しました。

ワークスペースの移行はボタンやコマンド1つで実行することはできず、移行ツールを利用する必要がありますが、機能が完全ではないため注意する必要があります。

ノートブックとフォルダのみのエクスポートであれば簡単に行うことができ、同じAzure Databricksの同一リージョン内であれば、Unity Catalogの移行も必要ありません。
単に本番ワークスペースのコピーを作りたい、ワークスペースを作り直したいという場合であれば、移行ツールを利用して最小限のリソースだけ移行するか、必要な分だけ手動で作成するのが良さそうです。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?