Databricksクイックスタートガイドのコンテンツです。
お恥ずかしながら、これまで自分でUnity Catalogをセットアップしたことがなかったのでした。
こちらを見ながら実際にセットアップします。
自動化ツールを使うこともできますが、ここではマニュアルでセットアップしてみます。Terraformの手順も後でまとめたいところです。
前提条件
- Databricksワークスペースがセットアップされていることを前提としています。セットアップされていない場合には、Databricksアカウントのセットアップとワークスペースの作成(実践編)を参考にセットアップしてください。
- DatabricksアカウントのアカウントIDが必要となります。アカウントコンソールにログイン後、サイドメニュー下部にあるユーザーアイコンをクリックするとアカウントIDが表示されるので、これをコピーしておきます。
警告
DatabricksアカウントIDやアカウントオーナーのメールアドレスは厳重に管理してください。第三者に公開しないでください。
AWSの設定
Unity Catalogを使い始めるには、AWSで以下の設定を行う必要があります。
- IAMロール: Databricksコントロールプレーンからのアクセスを許可するために必要となるIAMロールです。
- S3バケット: Unity Catalogのルートストレージロケーションとなります。Unity Catalogのマネージドテーブルが格納されます。
- IAMポリシー: 上記IAMロールがS3バケットにアクセスできるようにポリシーを定義します。
IAMロールの作成
-
Databricksのデプロイに使用したアカウントを用いて、AWSマネジメントコンソールにログインします。
-
IAMに移動してロールにアクセスし、ロールを作成をクリックします。
-
許可の追加では次へをクリックします。
-
ロール名を入力してロールを作成をクリックします。
-
ロール一覧に戻るので、作成したロールを検索してアクセスします。
-
信頼関係タブをクリックして 信頼ポリシーを編集をクリックします。
-
以下の内容を信頼ポリシーに貼り付けます。
JSON{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL", "arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<DatabricksアカウントID>" } } } ] }
以下はご自身の環境の値で置き換えてください。
-
<DatabricksアカウントID>
: アカウントコンソールでコピーしたDatabricksアカウントID -
<AWSアカウントID>
: ご自身のAWSアカウントID -
<作成したIAMロール>
: 上のステップで作成したIAMロール
-
-
ポリシーを更新をクリックします。
-
ARN
をコピーしておきます。
S3バケットの作成
- S3に移動して、バケットの作成をクリックします。
- バケット名を指定してバケットの作成をクリックします。バケット名にピリオドは含めないでください。
-
バケット名
をコピーしておきます。
IAMポリシーの作成
-
再びIAMに移動し、ポリシーにアクセスします。
-
ポリシーを作成をクリックします。
-
JSONタブを開き、以下の内容を貼り付けます。
JSON{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::<作成したS3バケット>/*", "arn:aws:s3:::<作成したS3バケット>" ], "Effect": "Allow" }, { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::<AWSアカウントID>:role/<作成したIAMロール>" ], "Effect": "Allow" } ] }
以下はご自身の環境の値で置き換えてください。
-
次のステップ: タグをクリックします。
-
次のステップ: 確認をクリックします。
-
名前にポリシー名を入力しポリシーの作成をクリックします。
-
ポリシー一覧に移動するので、作成したポリシーにアクセスします。
-
ポリシーの使用状況タブを開き、アタッチをクリックします。
-
上のステップで作成したIAMロールを検索し、チェックボックスを付けてポリシーのアタッチをクリックします。これでIAMロールにポリシーがアタッチされます。
Databricksの設定
これで、AWSの準備が整ったので以下の情報を用いて、Unity Catalogをセットアップします。
- IAMロールの
ARN
- S3バケット名
メタストアの作成
-
アカウントコンソールにログインし、サイドメニューのデータをクリックします。なお、アカウントコンソールも日本語対応しています。
- メタストア一覧が表示されますので、メタストアを作成するをクリックします。
- メタストアの名前を名前、リージョン(ワークスペースが存在するリージョンを選択してください。メタストアはリージョンごとに1つ作成できます)、S3バケットパスに上のステップで作成したS3バケット、IAMロールARNに上のステップで作成したIAMロールのARNを入力します。
- 作成をクリックします。
ワークスペースへのアタッチ
DatabricksワークスペースでUnity Catalogを利用するには、ワークスペースにメタストアをアタッチする必要があります。
これでUnity Catalogがセットアップされました。
動作確認
- メタストアにアタッチしたワークスペースにログインします。
- サイドメニューからデータにアクセスするとデータエクスプローラが表示されます。
- これまでHiveメタストアで管理されていたデータベースは
hive_metastore
配下に格納されています。 - その他、デフォルトのカタログ
main
が作成されています。
メタストア管理権限をグループに移譲
初期状態ではメタストアを作成したユーザーがメタストア管理者となります。運営上、個人のユーザーを管理者にするよりは、管理者用グループを作成してグループにメタストア管理権限を割り当てる方が望ましいです。
上のマニュアルに沿ってグループにメタストア管理権限を割り当てます。
- アカウントコンソールでユーザー管理にアクセスし、グループを追加をクリックします。
-
metastore admins
といったグループ名をつけます。
- グループのメンバーを追加します。
- アカウントコンソールのデータに移動して、メタストア管理者の右に表示されている編集をクリックします。
- 上で作成したグループを選択します。
- これでメタストア管理権限がグループに割り当てられました。このグループにユーザーを追加することで、メタストア管理権限を付与することができるようになりました。
次のステップ
チュートリアルを試してみてください。