Unity Catalog メタストアを作成する
この記事では、Unity Catalog メタストアを作成し、それをワークスペースにリンクする方法について説明します。
重要
Unity Catalog が自動的に有効になっているワークスペースの場合、この記事の手順は不要です。 Databricks は、2023 年 11 月 9 日、アカウント全体で順次ロールアウトする Unity Catalog の新しいワークスペースの自動有効化を開始しました。 ワークスペースがあり、ワークスペース リージョンにメタストアがまだない場合にのみ、この記事の手順に従う必要があります。 メタストアが既にリージョンに存在するかどうかを確認するには、Unity Catalog の自動有効化に関する記事を参照してください。
メタストアは、Unity Catalog 内のオブジェクトの最上位レベルのコンテナーです。 Unity Catalog メタストアには、セキュリティ保護可能なオブジェクト (テーブル、ボリューム、外部の場所、共有など) とそのオブジェクトへのアクセスを制御するアクセス許可に関するメタデータが登録されます。 各メタストアでは、データを整理できる 3 レベルの名前空間 (catalog
.schema
.table
) が公開されます。 組織が活動しているリージョンごとに、1 つのメタストアが存在する必要があります。 Unity Catalog を操作するには、ユーザーが自分のリージョンのメタストアに接続されているワークスペース上に存在する必要があります。
メタストアを作成するには、次の操作を行います。
Azure アカウントで、必要に応じて、マネージド テーブルとマネージド ボリュームのメタストアレベルのストレージの保存場所を作成します。
メタストア レベルのストレージが必要かどうかを判断するのに役立つ情報については、「(省略可能) メタストア レベルのストレージを作成する」と「データをストレージ内で物理的に分離する」を参照してください。
Azure アカウントで、その保存場所へのアクセスを許可する Azure マネージド ID またはサービス プリンシパルを作成します。
Azure Databricks で、メタストアを作成し、保存場所を接続して、メタストアにワークスペースを割り当てます。
Note
この記事に記載されたアプローチに加えて、Databricks Terraform プロバイダー、具体的には databricks_metastore リソースを使用してメタストアを作成することもできます。 Unity カタログがメタストアにアクセスできるようにするには、 databricks_metastore_data_access を使用します。 ワークスペースをメタストアにリンクするには、 databricks_metastore_assignment を使用します。
開始する前に
始める前に、メタストアやマネージド ストレージなど、Unity Catalog の基本的な概念について理解しておく必要があります。 「Unity Catalog とは」を参照してください。
すべてのセットアップ手順で次の要件を満たしていることを確認しておくことも必要です。
Azure Databricks のアカウント管理者である必要があります。
最初の Azure Databricks アカウント管理者は、最初に Azure Databricks アカウント コンソールにログインする時点で、Microsoft Entra ID 全体管理者である必要があります。 最初のログイン時に、そのユーザーは Azure Databricks アカウント管理者になり、Azure Databricks アカウントにアクセスするためには、Microsoft Entra ID 全体管理者の役割は不要になります。 最初のアカウント管理者は、Microsoft Entra ID テナントのユーザーを追加のアカウント管理者として割り当てることができます (このユーザー自身がアカウント管理者をさらに割り当てることができます)。 追加のアカウント管理者は、Microsoft Entra ID で特定のロールを必要としません。
メタストアにアタッチするワークスペースは、Azure Databricks Premium プラン上にある必要があります。
メタストア レベルのルート ストレージを設定する場合は、Azure テナントで次を作成するためのアクセス許可が必要です。
- Azure Data Lake Storage Gen2 で使用するストレージ アカウント。 「Azure Data Lake Storage Gen2 で使用するストレージ アカウントを作成する」をご覧ください。
- システム割り当てマネージド ID を保持するための新しいリソース。 これには、テナント内の任意のサブスクリプションのリソース グループの共同作成者または所有者である必要があります。
手順 1 (省略可能): メタストアレベルのマネージド ストレージ用のストレージ コンテナーを作成する
この手順 (省略可能) では、メタストア レベルでマネージド テーブル データとマネージド ボリューム データを格納するストレージ アカウントおよびコンテナーを作成します。 メタストア レベルのストレージが必要かどうかを判断するには、「(省略可能) メタストア レベルのストレージを作成する」を参照してください。
Azure Data Lake Storage Gen2 のストレージ アカウントを作成します。
このストレージ アカウントには、Unity Catalog マネージド テーブルおよびボリュームが含まれます。 これは、Azure Databricks ワークスペースと同じリージョンの Azure Data Lake Storage Gen2 アカウントである必要があります。 「Azure Data Lake Storage Gen2 で使用するストレージ アカウントを作成する」をご覧ください。
メタストア レベルでマネージド テーブル データとマネージド ボリューム データを保持するストレージ コンテナーを作成します。
作成できるメタストアはリージョンごとに 1 つのみです。 メタストアとストレージ コンテナーには同じリージョンを使用する必要があります。
メタストアレベルの保存場所は、カタログ レベルとスキーマ レベルでオーバーライドできます。 「Unity Catalog の管理されたストレージの場所の指定」を参照してください。
コンテナーの ADLSv2 URI を書き留めます。これは次の形式です。
abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
次の手順では、
<storage-container>
をこの URI に置き換えます。
手順 2 (省略可能): マネージド ID を作成してマネージド ストレージの場所にアクセスする
この手順 (手順 1 を完了した場合にのみ必要) では、マネージド ID を保持する Azure Databricks アクセス コネクタを作成し、これにストレージ コンテナーへのアクセス権を付与します。
「Unity Catalog で Azure マネージド ID を使用してストレージにアクセスする」の手順に従います。
Note
メタストアのストレージ コンテナーにアクセスできる ID としては、Azure マネージド ID またはサービス プリンシパルを使用できます。 マネージド ID では、資格情報を維持したり、シークレットをローテーションしたりする必要はありません。また、ストレージ ファイアウォールによって保護されている Azure Data Lake Storage Gen2 アカウントに接続できます。このため、Databricks ではマネージド ID を強くお勧めします。 サービス プリンシパルを使用する場合は、「サービス プリンシパルを使って Unity Catalog のマネージド ストレージを作成する (レガシ)」を参照してください。
手順 3: メタストアを作成してワークスペースを接続する
Azure Databricks の各リージョンには、独自の Unity Catalog メタストアが必要です。
組織が活動しているリージョンごとにメタストアを作成します。 リージョンごとに作成したこれらの各メタストアを、そのリージョン内の任意の数のワークスペースにリンクできます。 リンクされた各ワークスペースには、メタストア内のデータの同じビューがあり、ワークスペース間でデータ アクセスの制御を管理できます。 Delta Sharing を使用して、他のメタストアのデータにアクセスできます。
メタストアレベルのストレージを作成することを選択した場合、メタストアでは、前の手順で作成したストレージ コンテナーと Azure マネージド ID が使用されます。
メタストアを作成するには:
メタストアレベルのストレージを作成することを選択した場合、ストレージ コンテナーへのパスと、前のタスクで作成した Azure Databricks アクセス コネクタのリソース ID があることを確認します。
アカウント管理者としてワークスペースにログインします。
Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[アカウントを管理する] を選択します。
Azure Databricks のアカウント コンソールにログインします。
[カタログ] をクリックします。
[メタストアの作成] をクリックします。
次のように入力します。
メタストアの [名前]。
メタストアをデプロイする [リージョン]。
データへのアクセスに使用するワークスペースと同じリージョン内にある必要があります。 メタストアレベルのストレージ用のストレージ コンテナーを作成することを選択した場合、そのリージョンも同じである必要があります。
(省略可能) ADLS Gen 2 のパス: メタストアのルート ストレージとして使うストレージ コンテナーへのパスを入力します。
abfss://
プレフィックスが自動的に追加されます。(省略可能) アクセス コネクタ ID: Azure Databricks アクセス コネクタのリソース ID を、次の形式で入力します。
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
Create をクリックしてください。
メッセージが表示されたら、メタストアにリンクするワークスペースを選択します。
詳細については、「Unity Catalog のワークスペースを有効にする」を参照してください。
メタストア管理者ロールをグループに転送します。
メタストアを作成するユーザーは、その所有者で、メタストア管理者とも呼ばれます。メタストア管理者は、メタストア内にカタログなどの最上位レベルのオブジェクトを作成し、テーブルやその他のオブジェクトへのアクセスを管理できます。 Databricks では、メタストア管理者ロールをグループに再割り当てすることをお勧めします。 「メタストア管理者を割り当てる」を参照してください。
マネージド ボリュームへのアップロードに対して、Azure Databricks 管理を有効にします。
Azure Databricks では、クロスオリジン リソース共有 (CORS) を使用して、Unity Catalog 内のマネージド ボリュームにデータをアップロードします。 「CORS の Unity Catalog ストレージ アカウントを構成する」を参照してください。