Unity Catalog メタストアを作成する
この記事では、 Unity Catalog メタストアを作成し、ワークスペースにリンクする方法について説明します。
Unity Catalog が自動的に有効になったワークスペースの場合、この記事の手順は不要です。 Databricks は、2024 年 3 月 6 日に Unity Catalog の新しいワークスペースを自動的に有効にし始め、アカウント全体で徐々にロールアウトが進んでいます。 この記事の指示に従う必要があるのは、ワークスペースがあり、ワークスペース リージョンにメタストアがまだない場合のみです。 メタストアがリージョンに既に存在するかどうかを確認するには、「 Unity Catalog の自動有効化」を参照してください。
メタストアは、Unity Catalog 内のデータの最上位コンテナーです。 Unity Catalog メタストアは、セキュリティ保護可能なオブジェクト (テーブル、ボリューム、外部ロケーション、共有など) と、それらへのアクセスを制御するアクセス許可に関する登録する メタデータです。 各メタストアは、データを整理できる 3 レベルの名前空間 (catalog
.schema
.table
) を公開します。 組織が運営されている地域ごとに 1 つのメタストアが必要です。 Unity Catalog を使用するには、ユーザーが自分のリージョンのメタストアにアタッチされているワークスペースにいる必要があります。
メタストアを作成するには、次の操作を行います。
-
GCP アカウントで、必要に応じて、マネージドテーブルとボリュームのメタストア レベルのストレージのストレージ場所を作成します。
メタストア レベルのストレージが必要かどうかを判断するのに役立つ情報については、「 (省略可能) メタストア レベルのストレージを作成する 」および「 ストレージ内のデータが物理的に分離されている」を参照してください。
-
Databricks で、メタストアを作成します。 Databricks はサービス アカウントを生成します。
-
サービス アカウントに GCS バケットへのアクセス権を付与し、メタストアにワークスペースを割り当てます。
この記事で説明する方法に加えて、 Databricks Terraform プロバイダー (具体的には databricks_metastore リソース) を使用してメタストアを作成することもできます。 Unity Catalog がメタストアにアクセスできるようにするには、 databricks_metastore_data_access を使用します。 ワークスペースをメタストアにリンクするには、 databricks_metastore_assignment を使用します。
始める前に
開始する前に、メタストアや管理ストレージなど、Unity Catalog の基本的な概念について理解しておく必要があります。 「Unity Catalog とは」を参照してください。
また、すべてのセットアップ手順について、次の要件を満たしていることを確認する必要があります。
- Databricksアカウント管理者である必要があります。
- Databricks アカウントは Premium プランである必要があります。
- メタストア レベルのルート ストレージを設定する場合は、Google Cloud アカウントで GCS バケットを作成し、それらの GCS バケットに権限を割り当てる権限が必要です。
ステップ 1(省略可): GCS バケットを作成する
この手順 (省略可能) では、マネージド テーブルとボリューム データをメタストア レベルで格納するための GCS バケットを作成します。 メタストア レベルのストレージが必要かどうかを判断するには、「 (省略可能) メタストア レベルのストレージを作成する」を参照してください。
-
Google Cloud で GCS バケットを設定します。
ストレージ バケットは、このメタストアの マネージドテーブルの データが格納される場所です。 すべてのマネージドテーブルは、カタログレベルまたはスキーマレベルでストレージの場所を上書きしない限り、このバケットに保存されます。
バケットを作成する場合:
- データへのアクセスに使用するワークスペースと同じリージョンに作成します。
- 作成するメタストアごとに専用の GCS バケットを使用します。
- バケットへの直接ユーザーアクセスを許可しないでください。
-
バケットのパス (
gs://bucket-name
) をメモします。
手順 2: メタストアを作成し、必要に応じてサービス アカウントを生成する
メタストアを作成するには、次の手順を実行します。
-
Databricksアカウントコンソールにログインします。
-
[カタログ] をクリックします。
-
[ メタストアを作成 ]をクリックします。
-
次の項目を入力します。
-
メタストアの名前。
-
メタストアをデプロイするリージョン。
これは、データへのアクセスに使用するワークスペースと同じリージョンにある必要があります。 これが、以前に作成した GCS バケットのリージョンと一致していることを確認します。
-
(オプション)前のタスクで作成した GCS バケットへのパス。
-
-
作成 をクリックします。
前の手順で GCS バケットへのパスを指定した場合は、[ Provide Storage Access ] ダイアログが表示されます。 システムによって生成された サービス アカウント名 が表示され、そのサービス アカウントにIAM GCSバケットの 2 つの ロールを付与するように求められます。次のタスクに進むときは、このダイアログを開いたままにしておきます。 このタスクは、メタストア レベルのストレージを有効にする場合にのみ必要です。
GCS バケットへのパスを指定しなかった場合は、メタストアにワークスペースを割り当てるように求められます。 「ステップ 4: ワークスペースをメタストアに割り当てる」または「Unity Catalogのワークスペースを有効にする」を参照してください。
ステップ 3(省略可): GCS バケットへのアクセス権をサービス アカウントに付与する
この手順は、手順 1 を完了した場合にのみ必要ですが、システム生成のサービスアカウントにストレージバケットへのアクセス権を付与します。
-
別のブラウザタブまたはウィンドウで、Google Cloud コンソールに移動し、前の手順で指定した GCS バケットを開きます。
-
[ 権限 ] タブで [ + アクセス権を付与 ] をクリックし、サービスアカウントに以下のロールを割り当てます。
- ストレージレガシーバケットリーダー
- ストレージオブジェクト管理者
サービスアカウントのEメールアドレスを主識別子として使用します。
-
Databricks アカウント コンソールの [ Provide Storage Access ] ダイアログに戻り、[ Permissions granted ] をクリックします。
Databricks は、サービス アカウントがバケットへの正しいアクセス権を持っていることを検証します。
-
検証が成功したら、メタストアに割り当てるワークスペースを選択できます。
ワークスペースをメタストアに割り当てる方法については、次のセクションまたは「Unity Catalogのワークスペースを有効にする」を参照してください。
手順 4: メタストアにワークスペースを割り当てる
「ステップ 2: メタストアを作成し、必要に応じてサービス アカウントを生成する」の一部として、メタストアにワークスペースを割り当てるように求められます。その手順をスキップした場合、またはワークスペースをさらに追加する必要がある場合は、次の操作を行います。
- アカウント管理者として、アカウントコンソールにログインします。
[カタログ] をクリックします。
- メタストア名をクリックします。
- 「 ワークスペース」 タブをクリックします。
- [ ワークスペースに割り当てる] をクリックします。
- 1 つ以上のワークスペースを選択します。 ワークスペース名の一部を入力して、リストをフィルタリングできます。
- ダイアログの一番下までスクロールし、[ 割り当て] をクリックします。
- 確認ダイアログで、[ 有効にする] をクリックします。
手順 5: メタストア管理者ロールをグループに転送する
メタストアを作成するユーザーは、メタストア管理者とも呼ばれる所有者です。 メタストア管理者は、カタログなどの最上位のオブジェクトをメタストアに作成し、テーブルやその他のオブジェクトへのアクセスを管理できます。 Databricks では、メタストア管理者ロールをグループに再割り当てすることをお勧めします。 「 メタストア管理者を割り当てる」を参照してください。