Unity Catalog メタストアを作成する

この記事では、Unity Catalog メタストアを作成し、ワークスペースにリンクする方法について説明します。

重要

Unity Catalogに対して自動的に有効になったワークスペースの場合、この記事の手順は必要ありません。 Databricks は、2024 年 3 月 6 日に Unity Catalog の新しいワークスペースを自動的に有効にし始め、ロールアウトはアカウント全体で段階的に進められました。 この記事の手順に従う必要があるのは、ワークスペースがあり、ワークスペース領域にメタストアがまだない場合のみです。 リージョンにメタストアがすでに存在するかどうかを確認するには、 Unity Catalogの自動有効化」を参照してください。

メタストアは、Unity Catalog 内のデータの最上位のコンテナーです。 Unity Catalog メタストアは、セキュリティ保護可能なオブジェクト (テーブル、ボリューム、外部ロケーション、共有など) と、それらへのアクセスを制御するアクセス許可に関するメタデータを登録します。 各メタストアは、データを整理できる 3 レベルの名前空間 (catalog.schematable) を公開します。 組織が運用されているリージョンごとに 1 つのメタストアが必要です。 Unity Catalog を操作するには、ユーザーはリージョン内のメタストアにアタッチされているワークスペースにいる必要があります。

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

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

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

  2. Databricks で、メタストアを作成します。 Databricks によってサービス アカウントが生成されます。

  3. サービス アカウントに GCS バケットへのアクセス権を付与し、ワークスペースをメタストアに割り当てます。

この記事で説明されている方法に加えて、 Databricks Terraform プロバイダー、特に databricks_metastore リソースを使用してメタストアを作成することもできます。 Unity Catalog がメタストアにアクセスできるようにするには、 databricks_metastore_data_accessを使用します。ワークスペースをメタストアにリンクするには、 databricks_metastore_assignment を使用します。

始める前に

開始する前に、メタストアやマネージド ストレージなど、Unity Catalog の基本的な概念を理解しておく必要があります。 「 Unity Catalog とは」を参照してください。

また、すべてのセットアップ手順について、次の要件を満たしていることを確認する必要があります。

  • Databricksアカウント管理者である必要があります。

  • Databricks アカウントは Premium プランである必要があります。

  • メタストア レベルのルート ストレージを設定する場合は、Google クラウド アカウントで GCS バケットを作成し、それらの GCS バケットに権限を割り当てる権限が必要です。

ステップ 1 (オプション): GCS バケットを作成する

このステップ (省略可能) では、メタストア レベルでマネージドテーブルとボリューム データを格納するための GCS バケットを作成します。 メタストア レベルのストレージが必要かどうかを判断するには、「 (省略可能) メタストア レベルのストレージを作成する」を参照してください。

  1. Google クラウドで GCS バケットを設定します。

    ストレージ バケットは、このメタストアの マネージド テーブル のデータが格納される場所です。 すべてのマネージド テーブルは、カタログ レベルまたはスキーマ レベルで格納場所をオーバーライドしない限り、このバケットに格納されます。

    バケットを作成すると、次のようになります。

    • データへのアクセスに使用するワークスペースと同じリージョンに作成します。

    • 作成するメタストアごとに専用の GCS バケットを使用します。

    • バケットへの直接ユーザーアクセスを許可しないでください。

  2. バケットパス(gs://bucket-name)をメモします。

ステップ 2: メタストアを作成し、必要に応じてサービス アカウントを生成する

メタストアを作成するには、次の手順を実行します。

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

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

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

  4. 次の項目を入力します。

    • メタストアの名前。

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

      これは、データへのアクセスに使用するワークスペースと同じリージョンに存在する必要があります。 これが、前に作成した GCS バケットのリージョンと一致していることを確認してください。

    • (オプション)前のタスクで作成した GCS バケットへのパス。

  5. [作成]をクリックします。

    前のステップで GCS バケットへのパスを指定した場合は、[ Provide Storage Access ] ダイアログが表示されます。 システムによって生成されたサービス アカウント名 が表示され、そのサービスアカウントにGCSバケットのIAMロールを2つ付与するように求められます。 このダイアログは、次のタスクに進むときに開いたままにしておきます。 このタスクは、メタストア レベルのストレージを有効にする場合にのみ必要です。

    GCS バケットへのパスを指定しなかった場合は、メタストアにワークスペースを割り当てるように求められます。 ステップ 4: ワークスペースをメタストアに割り当てるか、 Unity Catalogのワークスペースを有効にするを参照してください。

ステップ 3(省略可): サービス アカウントに GCS バケットへのアクセス権を付与する

このステップでは、ステップ 1 を完了した場合にのみ必要で、システム生成のサービスアカウントにストレージバケットへのアクセス権を付与します。

  1. 別のブラウザタブまたはウィンドウで、Google クラウドコンソールに移動し、前の手順で指定した GCS バケットを開きます。

  2. [ アクセス許可 ] タブで、[ + アクセス権の付与 ] をクリックし、サービス アカウントに次のロールを割り当てます。

    • ストレージレガシーバケットリーダー

    • ストレージオブジェクト管理者

    サービスアカウントのメールアドレスをプリンシパル識別子として使用します。

  3. Databricks アカウント コンソールの [ ストレージ アクセスの提供 ] ダイアログに戻り、 [ アクセス許可の付与] をクリックします。

    Databricks は、サービス アカウントにバケットへの適切なアクセス権があることを検証します。

  4. 検証が成功したら、メタストアに割り当てるワークスペースを選択できます。

    メタストアにワークスペースを割り当てる方法については、次のセクションまたは「 Unity Catalogのワークスペースを有効にする」を参照してください。

ステップ 4: ワークスペースをメタストアに割り当てる

「ステップ 2: メタストアを作成し、必要に応じてサービス アカウントを生成する」の一環として、ワークスペースをメタストアに割り当てるように求められます。そのステップをスキップした場合、またはワークスペースを追加する必要がある場合は、次の操作を行います。

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

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

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

  4. ワークスペース 」タブをクリックします。

  5. [ ワークスペースに割り当てる] をクリックします。

  6. 1 つ以上のワークスペースを選択します。 ワークスペース名の一部を入力して、リストをフィルタリングできます。

  7. ダイアログの一番下までスクロールし、「 割り当て」をクリックします。

  8. 確認ダイアログで、「 有効化」をクリックします。

ステップ 5: メタストア管理者ロールをグループに転送する

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