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 を操作するには、ユーザーが自分のリージョンのメタストアに接続されているワークスペース上に存在する必要があります。

メタストアを作成するには、次の操作を行います。

  1. Azure アカウントで、必要に応じて、マネージド テーブルとマネージド ボリュームのメタストアレベルのストレージの保存場所を作成します。

    メタストア レベルのストレージが必要かどうかを判断するのに役立つ情報については、「(省略可能) メタストア レベルのストレージを作成する」と「データをストレージ内で物理的に分離する」を参照してください。

  2. Azure アカウントで、その保存場所へのアクセスを許可する Azure マネージド ID を作成します。

  3. 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 Active Directory) 全体管理者である必要があります。 最初のログイン時に、そのユーザーは 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 (省略可能): メタストアレベルのマネージド ストレージ用のストレージ コンテナーを作成する

この手順 (省略可能) では、メタストア レベルでマネージド テーブル データとマネージド ボリューム データを格納するストレージ アカウントおよびコンテナーを作成します。 メタストア レベルのストレージが必要かどうかを判断するには、「(省略可能) メタストア レベルのストレージを作成する」を参照してください。

  1. Azure Data Lake Storage Gen2 のストレージ アカウントを作成します。

    このストレージ アカウントには、Unity Catalog マネージド テーブルおよびボリュームが含まれます。 これは、Azure Databricks ワークスペースと同じリージョンの Azure Data Lake Storage Gen2 アカウントである必要があります。 「Azure Data Lake Storage Gen2 で使用するストレージ アカウントを作成する」をご覧ください。

  2. メタストア レベルでマネージド テーブル データとマネージド ボリューム データを保持するストレージ コンテナーを作成します。

    作成できるメタストアはリージョンごとに 1 つのみです。 メタストアとストレージ コンテナーには同じリージョンを使用する必要があります。

    メタストアレベルの既定の保存場所は、カタログ レベルとスキーマ レベルでオーバーライドできます。 「マネージド ストレージ」を参照してください。

    コンテナーの 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 が使用されます。

メタストアを作成するには:

  1. メタストアレベルのストレージを作成することを選択した場合、ストレージ コンテナーへのパスと、前のタスクで作成した Azure Databricks アクセス コネクタのリソース ID があることを確認します。

  2. アカウント管理者としてワークスペースにログインします。

  3. Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[アカウントを管理する] を選択します。

  4. Azure Databricks のアカウント コンソールにログインします。

  5. カタログ アイコンカタログ をクリックします。

  6. [メタストアの作成] をクリックします。

  7. 次のように入力します。

    • メタストアの [名前]

    • メタストアをデプロイする [リージョン]

      データへのアクセスに使用するワークスペースと同じリージョン内にある必要があります。 メタストアレベルのストレージ用のストレージ コンテナーを作成することを選択した場合、そのリージョンも同じである必要があります。

    • (省略可能) ADLS Gen 2 のパス: メタストアのルート ストレージとして使うストレージ コンテナーへのパスを入力します。

      abfss:// プレフィックスが自動的に追加されます。

    • (省略可能) アクセス コネクタ ID: Azure Databricks アクセス コネクタのリソース ID を、次の形式で入力します。

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
  8. Create をクリックしてください。

  9. メッセージが表示されたら、メタストアにリンクするワークスペースを選択します。

    詳細については、「Unity Catalog のワークスペースを有効にする」を参照してください。

  10. メタストア管理者ロールをグループに転送します。

    メタストアを作成するユーザーは、その所有者で、メタストア管理者とも呼ばれます。メタストア管理者は、メタストア内にカタログなどの最上位レベルのオブジェクトを作成し、テーブルやその他のオブジェクトへのアクセスを管理できます。 Databricks では、メタストア管理者ロールをグループに再割り当てすることをお勧めします。 「メタストア管理者を割り当てる」を参照してください。

  11. マネージド ボリュームへのアップロードに対して、Azure Databricks 管理を有効にします。

    Azure Databricks では、クロスオリジン リソース共有 (CORS) を使用して、Unity Catalog 内のマネージド ボリュームにデータをアップロードします。 「CORS の Unity Catalog ストレージ アカウントを構成する」を参照してください。

次のステップ

既存のメタストアにマネージド ストレージを追加する

メタストアレベルのマネージド ストレージは省略可能であり、自動的に作成されるメタストアについては含まれていません。 複数のワークスペースのデータを一元的に格納するデータ分離モデルを使用する場合は、メタストアレベルのストレージをメタストアに追加することをお勧めします。 Delta Sharing を使用してノートブックを共有する場合、または個人用ステージングの場所を使用する Azure Databricks パートナーである場合は、メタストアレベルのストレージが必要です。

マネージド ストレージ」も参照してください。

要件

  • Unity Catalog メタストアに少なくとも 1 つのワークスペースがアタッチされている必要があります。
  • 以下の Azure Databricks アクセス許可が必要です。
    • 外部の場所を作成するには、メタストア管理者か、CREATE EXTERNAL LOCATIONCREATE STORAGE CREDENTIAL の特権を持つユーザーである必要があります。
    • メタストア定義にストレージの場所を追加するには、アカウント管理者である必要があります。アカウントでアカウント管理者ロールを有効にする手順については、「最初のアカウント管理者を確立する」を参照してください。
  • 以下の Azure テナント アクセス許可が必要です。
    • Azure Data Lake Storage Gen2 で使用するストレージ アカウントを作成するアクセス許可。 このストレージ アカウントには階層型名前空間が必要です。 「Azure Data Lake Storage Gen2 で使用するストレージ アカウントを作成する」をご覧ください。
    • システム割り当てマネージド ID を保持するための新しいリソースを作成するアクセス許可。 これには、テナント内の任意のサブスクリプションのリソース グループの共同作成者または所有者である必要があります。

手順 1: ストレージの場所を作成する

手順 1 (省略可能): メタストア レベルのマネージド ストレージ用のストレージ コンテナーを作成する」と「手順 2 (省略可能): マネージド ストレージの場所にアクセスするマネージド ID を作成する」の手順に従って、Azure Data Lake Storage Gen2 にストレージ コンテナーを作成し、ストレージ コンテナーにアクセスできるマネージド ID を保持する Azure Databricks アクセス コネクタを作成します。

手順 2: Unity Catalog に外部の場所を作成する

この手順では、先ほど作成した ADLS Gen 2 パスを参照する外部の場所を Unity Catalog に作成します。

  1. ストレージ資格情報を作成します。

    ストレージ資格情報は、「手順 1: ストレージの場所を作成する」で作成した Azure マネージド ID を表します。

    Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する」の手順に従います。

  2. 前の手順で作成したストレージ資格情報と、「手順 1: ストレージの場所を作成する」で作成した ADLS Gen 2 ストレージ コンテナーを参照する外部の場所を作成します。

    クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」の手順に従います

  3. 自分自身に外部の場所に対する CREATE MANAGED STORAGE アクセス許可を付与します。

    1. 外部の場所の名前をクリックして、詳細ウィンドウを開きます。
    2. [アクセス許可] タブで [付与] をクリックします。
    3. [<external location> の許可] ダイアログの [プリンシパル] フィールドで自分を選択し、[CREATE MANAGED STORAGE] を選択します。
    4. [許可] をクリックします。

手順 3: メタストアにストレージの場所を追加する

メタストア ストレージ バケットを表す外部の場所を作成したら、それをメタストアに追加できます。

  1. アカウント管理者として、アカウント コンソールにログインします。

  2. カタログ アイコンカタログ をクリックします。

  3. メタストアの名前をクリックします。

  4. メタストア管理者であることを確認します。

    そうでない場合は、[編集] をクリックし、自分をメタストア管理者として割り当てます。この手順が完了したら、自分の割り当てを解除できます。

  5. [構成] タブの [ADLS Gen 2 パス] の横にある [設定] をクリックします。

  6. [Set metastore root] (メタストア ルートの設定) ダイアログで、外部の場所の作成に使用した ADLS Gen 2 パスを入力し、[更新] をクリックします。

    このパスは、一度設定した後は変更できません。

メタストアを削除する

Azure Databricks アカウントを閉じるか、Unity カタログ メタストアによって管理されているデータへのアクセスを削除する別の理由がある場合は、メタストアを削除できます。

警告

メタストアによって管理されるすべてのオブジェクトは、Azure Databricks ワークスペースを使用してアクセスすることはできなくなります。 この削除操作は元に戻すことができません。

マネージド テーブル のデータとメタデータは、30 日後に自動的に削除されます。 クラウド ストレージ内の外部テーブル データは、メタストアの削除の影響を受けません。

メタストアを削除するには

  1. メタストア管理者として、[アカウント コンソール] にログインします。
  2. カタログ アイコンカタログ をクリックします。
  3. メタストアの名前をクリックします。
  4. [構成] タブで、右上にある 3 つのボタン メニューをクリックし、[削除] を選択します。
  5. 確認ダイアログで、メタストアの名前を入力し、[削除] をクリックします。