1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[2024/12版] Unity Catalogセットアップガイド

Last updated at Posted at 2024-12-11

過去に以下のような記事を書きました。

例によってアドベントカレンダーということもあり、改めて現時点でのセットアップの方法をウォークスルーします。前回との大きな変更点は、後述するUnity Catalogの自動有効化です。こちらの挙動を理解した上で、要件に合わせたセットアップが必要となります。

スライドにもまとめました。

Unity Catalogとは

DatabricksはデータとAIのガバナンスを統合します。Databricksで取り扱う、データベースやテーブル、ファイルや機械学習モデルなどに対するガバナンスを集中管理することができます。

Screenshot 2024-12-11 at 15.57.06.png

ガバナンス機能の中核となるのが、Unity Catalogです。データ資産、AI資産のアクセスコントロール、監査、リネージ(依存関係)、検索、監視、共有などの機能を提供します。

Screenshot 2024-12-11 at 15.57.28.png

Unity Catalogの自動有効化

冒頭の記事を書いた頃は、Databricksアカウントレベルでの手動によるUnity Catalogの有効化が必要でした。しかし、2023/11以降はUnity Catalogが自動で有効化されるようになっています。

メリット

  • 新規ワークスペースはUnity Catalog(UC)へのアクセスが事前設定されて提供されるので、アセットのガバナンスがデフォルトで確保されます。
  • アカウント管理者に連絡する必要なしにワークスペースの利用を開始できます。
  • Unity Catalogをベースとする最新のDatabricks機能にアクセスできます。
  • Hiveサポートを含むUC以前のワークロードとの完全互換性があります

自動有効化の概要

Screenshot 2024-12-11 at 16.02.54.png

  1. ワークスペースを作成するとワークスペースでUCが自動で有効化されます。
  2. ワークスペース専用のカタログが自動で作成されます。
  3. ワークスペース管理者が上記カタログの所有者になります。
  4. 従来のHiveメタストアのサポートには変更はありません。

動作原理

  1. あるリージョンに最初のワークスペースが作成されると、それとともに自動でメタストアも作成されます。自動作成されたメタストアには、ワークスペース分離を維持するために、ルートストレージメタストア管理者は設定されません
    Screenshot 2024-12-11 at 16.14.58.png

  2. 新規ワークスペースは同じリージョンのUCメタストアに自動でアタッチされます。
    Screenshot 2024-12-11 at 16.15.22.png

  3. ワークスペースとともに、ワークスペース名のついた事前設定済みのカタログが提供されます。カタログはデフォルトでワークスペースにアタッチされており、アクセスを明示的に解放しない限り、当該ワークスペースからしかアクセスできないことを意味します。
    Screenshot 2024-12-11 at 16.18.31.png

  4. ワークスペース管理者は上記のカタログの所有権を持ち、UCで新規カタログ、ロケーション、コネクション、その他のルートレベルのオブジェクトを作成することができます。
    Screenshot 2024-12-11 at 16.18.52.png

  5. このカタログはワークスペース専用のストレージを使用します:

    • Azure - DBFSに隣接する新規コンテナ
    • AWS - ワークスペースストレージ配下で分離されたプレフィクス

    Screenshot 2024-12-11 at 16.19.15.png

  6. ユーザーがカタログ/スキーマを指定せずにCREATE TABLE myTableを実行した場合、defaultとして設定されているカタログにテーブルが作成されます。これは、workspace default catalogという新たなワークスペース設定で制御されます。従来のHiveメタストアを使い続けたい場合には、この設定を変更します。
    Screenshot 2024-12-11 at 16.19.36.png

コンポーネント 以前のリリース UC自動有効化
Unity Catalog ワークスペース作成後にアカウント管理者によって有効化 ワークスペース作成時に自動で有効化
Hiveメタストア それぞれのワークスペースで自身のHiveメタストアを保持 それぞれのワークスペースで自身のHiveメタストアを保持
ID管理 ワークスペースごとのID管理システム、ローカルグループ アイデンティティフェデレーション, アカウントグループ (アカウント管理者、ワークスペース管理者によって作成)
デフォルトのカタログ Hive UI/APIで設定可能 (UCカタログかHiveを選択可能)
UCメタストアのストレージルートとメタストア管理者 必須 オプション (分散ガバナンスをサポート)
UCストレージ資格情報の作成 アカウント管理者のみ アカウント管理者、メタストア管理者、ワークスペース管理者、CREATE STORAGE CREDENTIAL権限を持つユーザー
UCカタログ作成(コネクション、外部ロケーション、共有にも適用) メタストア管理者、CREATE CATALOG権限を持つユーザー メタストア管理者、ワークスペース管理者、CREATE CATALOG権限を持つユーザー

注意点

UCが自動有効化されたワークスペースで新規にカタログを作成する際にはストレージの指定が必要です。

  • 前提として、Unity Catalogではカタログやスキーマ(データベース)が使用するストレージ(S3バケットやADLSコンテナ)が必要となります。
  • 新規にワークスペースを作成し、Unity Catalogが自動で有効化されると、自動で当該ワークスペース専用の(マネージド)ストレージが作成され、そのストレージを使用する当該ワークスペース専用のカタログが自動で作成されます。
  • しかし、別途カタログを作成する場合には、上のステップで作成済みのストレージあるいは新規のストレージを使用するように明示的に指示する必要があります。ストレージを指定せずにカタログを作成しようとすると以下のエラーメッセージに遭遇します。

Metastore storage root URL does not exist. Please provide a storage location for the catalog (for example 'CREATE CATALOG myCatalog MANAGED LOCATION ''). Alternatively set up a metastore root storage location to provide a storage location for all catalogs in the metastore.

そして、ストレージを指定する際にはデータ分離ポリシーを検討する必要があります。

  • ストレージは、メタストアレベル、カタログレベル、スキーマレベルで指定することができます。レベルに応じたデータ分離が行われます。
  • テーブルのストレージロケーション(場所)は、どのレベルのストレージが設定されているのかによって、以下の順序で決定されます。
    1. スキーマにストレージロケーションが設定されている場合、テーブルはスキーマのストレージロケーションに格納されます。
    2. カタログにストレージロケーションが設定されている場合、テーブルはカタログのストレージロケーションに格納されます。
    3. カタログにもストレージロケーションが設定されていない場合、テーブルはメタストアのストレージロケーションに格納されます。

データ分離の観点では、メタストアのデフォルトロケーションにカタログ/スキーマを格納しないことを強くお勧めします。メタストアのデフォルトロケーションが存在すると、ストレージを指定しなくてもカタログやスキーマを作成することができ、データの分離が行えなくなります。そうではなく、カタログごとの個別のマネージドストレージロケーションを指定しましょう(これがカタログ内のスキーマ/テーブルのデフォルトロケーションになります)。

Screenshot 2024-12-11 at 16.31.05.png

注意
上記の推奨事項はデータ分離の要件に基づくものです。サンドボックス環境などデータ分離の要件が弱い場合には、環境構築の容易さからメタストアでデフォルトストレージロケーションを指定することには合理性があると言えます。

Unity Catalogセットアップガイド

以下では、Databricksワークスペース作成完了後の手順をご説明します。

AWS シナリオ1: カタログレベルのデータ分離

ワークスペースを作成した時点でワークスペース専用のカタログは作成済みです。

Screenshot 2024-12-11 at 13.14.30.png

カタログで使用するストレージも外部ロケーションとして設定済みです。

Screenshot 2024-12-11 at 13.21.11.png

新規にカタログを追加します。

Screenshot 2024-12-11 at 13.19.31.png

注意
CREATE CATALOG…MANAGED LOCATIONでも同様の操作が可能です。

作成済みの外部ロケーションを指定します。

Screenshot 2024-12-11 at 13.22.39.png

必要に応じて権限やタグを設定します。

Screenshot 2024-12-11 at 13.23.01.png
Screenshot 2024-12-11 at 13.23.49.png
Screenshot 2024-12-11 at 13.25.26.png

これで新規カタログが作成されました。

Screenshot 2024-12-11 at 13.25.44.png

ワークスペース作成時に構成されたS3バケットに新規カタログのデータも格納されます。

Screenshot 2024-12-11 at 13.30.49.png

S3バケット自体も分離したい場合は以下の手順を実施してください。

  • S3バケットを作成し、当該S3バケットにアクセス可能なストレージ資格情報を作成します。
  • ストレージ資格情報とS3バケットのパスを参照する外部ロケーションを作成します。
  • カタログ作成時に新規に作成した外部ロケーションを選択します。

AWS シナリオ2: メタストアレベルのストレージ

カタログレベルでのデータ分離が不要の場合には、メタストアレベルのデフォルトストレージを設定することも可能です。詳細は注意点をご覧ください。

  • カタログレベルでのデータ分離は強制できなくなります。
  • メタストアレベルのデフォルトストレージとして使用するS3バケットを作成し、当該S3バケットにアクセス可能なストレージ資格情報を作成します。
  • ストレージ資格情報とS3バケットのパスを参照する外部ロケーションを作成します。
  • Databricksアカウントコンソールにアクセスします。
  • UC自動有効化で作成されたメタストアにアクセスします。
    Screenshot 2024-12-11 at 13.32.35.png
  • メタストアのストレージを設定するために、上で設定した外部ロケーションのS3バケットパスをセットします。これで、メタストアのデフォルトストレージが設定されます。
    Screenshot 2024-12-11 at 13.36.49.png

Azure シナリオ1: カタログレベルのデータ分離

ワークスペースを作成した時点でワークスペース専用のカタログは作成済みです。

Screenshot 2024-12-11 at 14.35.49.png

カタログで使用するストレージも外部ロケーションとして設定済みです。

Screenshot 2024-12-11 at 14.36.04.png

新規にカタログを追加します。

Screenshot 2024-12-11 at 14.36.44.png

注意
CREATE CATALOG…MANAGED LOCATIONでも同様の操作が可能です。

作成済みの外部ロケーションを指定します。

Screenshot 2024-12-11 at 14.39.57.png

必要に応じて権限やタグを設定します。

Screenshot 2024-12-11 at 14.46.22.png

ADLSコンテナ自体も分離したい場合には以下の手順を実施してください。

Azure シナリオ2: メタストアレベルのストレージ

カタログレベルでのデータ分離が不要の場合には、メタストアレベルのデフォルトストレージを設定することも可能です。詳細は注意点をご覧ください。

  • カタログレベルでのデータ分離は強制できなくなります。
  • メタストアのデフォルトストレージと指定使用するストレージアカウントとストレージコンテナを作成し、パス(例: abfss://my-container-name@my-storage-account.dfs.core.windows.net/)をメモしておきます。
  • ストレージアカウントにアクセスできるマネージドIDを保持するAzure Databricksアクセスコネクタを作成します。(手順4までを実施)
  • ストレージ資格情報を作成します。(10番までを実施)
  • 外部ロケーションを作成します。
  • Azure Databricksアカウントコンソールにアクセスします。
  • UC自動有効化で作成されたメタストアにアクセスします。
    Screenshot 2024-12-11 at 15.14.42.png
  • メタストアのストレージを設定するために、上で設定した外部ロケーションのADLS Gen2バケットパスをセットします。これで、メタストアのデフォルトストレージが設定されます。
    Screenshot 2024-12-11 at 15.14.54.png

参考資料

AWS

Azure

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?