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 クラウド アカウントで GCS バケットを作成し、それらの GCS バケットに権限を割り当てる権限が必要です。
ステップ 1 (オプション): GCS バケットを作成する
このステップ (省略可能) では、メタストア レベルで管理テーブルとボリューム データを格納するための GCS バケットを作成します。 メタストア レベルのストレージが必要かどうかを判断するには、「 (省略可能) メタストア レベルのストレージを作成する」を参照してください。
Google クラウドで GCS バケットを設定します。
ストレージ バケットは、このメタストアの マネージド テーブル のデータが格納される場所です。 すべてのマネージド テーブルは、カタログ レベルまたはスキーマ レベルで格納場所をオーバーライドしない限り、このバケットに格納されます。
バケットを作成すると、次のようになります。
データへのアクセスに使用するワークスペースと同じリージョンに作成します。
作成するメタストアごとに専用の GCS バケットを使用します。
バケットへの直接ユーザーアクセスを許可しないでください。
バケットパス(
gs://bucket-name
)をメモします。
ステップ 2: メタストアを作成し、必要に応じてサービス アカウントを生成する
メタストアを作成するには、次の手順を実行します。
Databricksアカウントコンソールにログインします。
「 カタログ」 をクリックします 。
[メタストアを作成]をクリックします。
次の項目を入力します。
メタストアの名前。
メタストアをデプロイするリージョン。
これは、データへのアクセスに使用するワークスペースと同じリージョンに存在する必要があります。 これが、前に作成した GCS バケットのリージョンと一致していることを確認してください。
(オプション)前のタスクで作成した GCS バケットへのパス。
[作成]をクリックします。
前のステップで GCS バケットへのパスを指定した場合は、[ Provide Storage Access ] ダイアログが表示されます。 システムによって生成されたサービス アカウント名 が表示され、そのサービスアカウントにGCSバケットのIAMロールを2つ付与するように求められます。 このダイアログは、次のタスクに進むときに開いたままにしておきます。 このタスクは、メタストア レベルのストレージを有効にする場合にのみ必要です。
GCS バケットへのパスを指定しなかった場合は、メタストアにワークスペースを割り当てるように求められます。 ステップ 4: ワークスペースをメタストアに割り当てるか、 Unity Catalogのワークスペースを有効にするを参照してください。
ステップ 3(省略可): サービス アカウントに GCS バケットへのアクセス権を付与する
このステップでは、ステップ 1 を完了した場合にのみ必要で、システム生成のサービスアカウントにストレージバケットへのアクセス権を付与します。
別のブラウザタブまたはウィンドウで、Google クラウドコンソールに移動し、前の手順で指定した GCS バケットを開きます。
[ アクセス許可 ] タブで、[ + アクセス権の付与 ] をクリックし、サービス アカウントに次のロールを割り当てます。
ストレージレガシーバケットリーダー
ストレージオブジェクト管理者
サービスアカウントのメールアドレスをプリンシパル識別子として使用します。
Databricks アカウント コンソールの [ ストレージ アクセスの提供 ] ダイアログに戻り、 [ アクセス許可の付与] をクリックします。
Databricks は、サービス アカウントにバケットへの適切なアクセス権があることを検証します。
検証が成功したら、メタストアに割り当てるワークスペースを選択できます。
メタストアにワークスペースを割り当てる方法については、次のセクションまたは「 Unity Catalogのワークスペースを有効にする」を参照してください。
ステップ 4: ワークスペースをメタストアに割り当てる
「ステップ 2: メタストアを作成し、必要に応じてサービス アカウントを生成する」の一環として、ワークスペースをメタストアに割り当てるように求められます。そのステップをスキップした場合、またはワークスペースを追加する必要がある場合は、次の操作を行います。
アカウント管理者として、アカウントコンソールにログインします。
「 カタログ」 をクリックします 。
メタストア名をクリックします。
「 ワークスペース 」タブをクリックします。
[ ワークスペースに割り当てる] をクリックします。
1 つ以上のワークスペースを選択します。 ワークスペース名の一部を入力して、リストをフィルタリングできます。
ダイアログの一番下までスクロールし、「 割り当て」をクリックします。
確認ダイアログで、「 有効化」をクリックします。
ステップ 5: メタストア管理者ロールをグループに転送する
メタストアを作成するユーザーは、その所有者であり、メタストア管理者とも呼ばれます。 メタストア管理者は、カタログなどのメタストアに最上位のオブジェクトを作成し、テーブルやその他のオブジェクトへのアクセスを管理できます。 Databricks では、メタストア管理者ロールをグループに再割り当てすることをお勧めします。 「 メタストア管理者を割り当てる」を参照してください。
マネージド ストレージを既存のメタストアに追加する
メタストア レベルの管理ストレージはオプションであり、自動的に作成されたメタストアには含まれません。 複数のワークスペースのデータを一元的に格納するデータ分離モデルを使用する場合は、メタストア レベルのストレージをメタストアに追加できます。 Delta Sharing を使用してノートブックを共有する場合、または個人用ステージング場所を使用する Databricks パートナーの場合は、メタストア レベルのストレージが必要です。
「 管理ストレージ」も参照してください。
要件
少なくとも 1 つのワークスペースが Unity Catalog メタストアに接続されている必要があります。
必要な Databricks アクセス許可:
外部ロケーションを作成するには、メタストア管理者であるか、
CREATE EXTERNAL LOCATION
特権とCREATE STORAGE CREDENTIAL
特権を持つユーザーである必要があります。メタストア定義にストレージの場所を追加するには、アカウント管理者である必要があります。
必要なGCP権限:GCSバケットとサービスアカウントを作成する機能。
ステップ 1: 保存場所を作成する
「ステップ 1 (オプション): GCS バケットを作成する」の手順に従って、メタストアと同じリージョンの Google クラウド アカウントに専用の GCS バケットを作成します。
ステップ 2: Unity Catalog で外部ロケーションを作成する
この手順では、先ほど作成した GCS バケット パスを参照する外部ロケーションを Unity Catalog に作成します。
ストレージ資格情報を作成します。
ストレージ認証情報の作成の一環として、Google クラウドサービスアカウントが作成され、そのサービスアカウントに「 ステップ 1: 保存場所を作成する」で作成した GCS バケットへのアクセス権を付与します。
前のステップで作成したストレージ認証情報と、「 ステップ 1: ストレージの場所を作成する」で作成した GCS バケットを参照する外部ロケーションを作成します。
外部ロケーションに対する
CREATE MANAGED STORAGE
権限を自分に付与します。外部ロケーション名をクリックして、詳細ウィンドウを開きます。
[ アクセス許可 ] タブで、[ 許可] をクリックします。
「
<external location>
付与」ダイアログで、「プリンシパル」フィールドで自分自身を選択し、「CREATE MANAGED STORAGE
」を選択します。[付与] をクリックします。
ステップ 3: メタストアに格納場所を追加する
メタストア ストレージ バケットを表す外部ロケーションを作成したら、それをメタストアに追加できます。
アカウント管理者として、アカウントコンソールにログインします。
「 カタログ」 をクリックします 。
メタストア名をクリックします。
自分がメタストア管理者であることを確認します。
そうでない場合は、[ 編集 ] をクリックし、自分自身をメタストア管理者として割り当てます。 この手順が完了したら、自分自身の割り当てを解除できます。
[ Configuration ] タブの [GCS bucket path] の横にある [ Set] をクリックします。
[ Set metastore root ] ダイアログで、外部ロケーションの作成に使用した GCS バケットパスを入力し、[ Update] をクリックします。
このパスは、一度設定すると変更できません。
メタストア を削除する
Databricks アカウントを閉鎖する場合、または Unity Catalog メタストアによって管理されるデータへのアクセスを削除する別の理由がある場合は、メタストアを削除できます。
警告
メタストアによって管理されるすべてのオブジェクトは、Databricks ワークスペースを使用してアクセスできなくなります。 この操作は元に戻せません。
マネージド テーブルの データとメタデータは、30 日後に自動的に削除されます。 クラウド ストレージ内の外部テーブル データは、メタストアの削除の影響を受けません。
メタストアを削除するには:
メタストア管理者として、 アカウント コンソールにログインします。
「 カタログ」 をクリックします 。
メタストア名をクリックします。
[ 構成 ] タブで、右上にある 3 つのボタン メニューをクリックし 、[削除] を選択します。
確認ダイアログで、メタストアの名前を入力し、[ 削除] をクリックします。