Hive metastoreフェデレーション: Unity Catalog がHive metastore に登録されたテーブルを制御できるようにします

プレビュー

この機能はパブリックプレビュー段階です。

この記事では、Hive metastoreに格納されているテーブルを Unity Catalog で管理できるようにする機能である Hive metastore フェデレーションについて説明します。外部 Hive metastore、 AWS Glue、または従来の内部 Databricks Hive metastoreをフェデレーションできます。

Hive metastore フェデレーションは、次のユースケースで使用できます。

  • Unity Catalogへの移行パスのステップとして、コード適応なしで増分移行を有効にし、一部のワークロードはHive metastoreに登録されているデータを引き続き使用し、他のワークロードは移行します。

    このユース ケースは、フェデレーション内部メタストアでは読み取りと書き込みの両方のワークロードが許可されるため、現在レガシ内部 Databricks Hive metastore を使用している組織 Hive 最も適しています。

  • に登録されているデータと共に一部のデータを に保持する必要がある組織に、長期的なハイブリッド モデルを提供するため。Hive metastoreUnity Catalog

    このユース ケースは、外部 Hive metastore または AWS Glue を現在使用している組織に最適です。これは、これらの Hive メタストアのフェデレーション カタログが読み取り専用であるためです。

Hive フェデレーションを紹介する図

Hive metastoreフェデレーションの概要

フェデレーションでは、 ワークスペースから Hive metastoreへの接続を作成し、DatabricksHive metastore Unity CatalogクロールしてHive metastore フェデレーションカタログ Hive metastoreUnity Catalogにデータを設定します。これにより、組織は 内の テーブルを操作でき、一元的なアクセス制御、リネージ、検索、 などなど。

Databricks ワークスペースの外部にあるフェデレーション Hive メタストア (AWS Glue など) では、Unity Catalog を使用した読み取りが許可されます。 内部メタストア Hive では、読み取りと書き込みが可能で、メタデータを変更するときに Hive metastore メタデータと Unity Catalog メタデータが更新されます。

フェデレーション Hive metastore 資産に対してクエリを実行すると、 Unity Catalog はガバナンス層を提供し、アクセス制御チェックや監査などの機能を実行する一方で、クエリは Hive metastore セマンティクスを使用して実行されます。 たとえば、ユーザーがフェデレーテッドカタログに Parquet 形式で保存されたテーブルをクエリする場合、次のようになります。

  • Unity Catalog 、ユーザーがテーブルにアクセスできるかどうかを確認し、クエリのリネージを推論します。

  • クエリ自体は、基になる Hive metastoreに対して実行され、そこに格納されている最新のメタデータとパーティション情報を活用します。

Hive フェデレーション シナリオでの HMS、Unity Catalog、Databricks ワークロード間の関係を示す図

Hive metastoreフェデレーションは、外部テーブルを使用する場合とどのように比較Unity Catalogか。

Unity Catalogには、任意のクラウドストレージの場所にすでに存在するデータを取得し、テーブルとして に登録する外部 テーブルUnity Catalog を作成する機能があります。このセクションでは、外部テーブルとフェデレーテッド Hive metastore テーブルの違いについて説明します。

どちらのテーブルタイプにも、次のプロパティがあります。

  • クラウドストレージ内の任意の場所をテーブルとして登録するために使用できます。

  • Unity Catalog のアクセス許可ときめ細かなアクセス制御を適用できます。

  • リネージで参照するクエリを表示できます。

フェデレーテッド・テーブルのみに、次のプロパティがあります。

  • Hive metastoreのクロールに基づいて自動的に検出されます。Hive metastoreでテーブルが作成されるとすぐに、テーブルが表示され、Unity Catalog フェデレーション カタログでクエリを実行できるようになります。

  • Hive のセマンティクス (Hive SerDes やパーティションなど) を使用してテーブルを定義できるようにします。

  • テーブルがフェデレーションカタログ内の他のテーブルと重複するパスを持つことを許可します。

  • テーブルを DBFSルートの場所に配置できるようにします。

  • Hive metastoreで定義されているビューを含めます。

このように、フェデレーテッド Hive metastore テーブルは Hive metastoreとの下位互換性を提供すると考えることができ、ワークロードは Hiveのみのセマンティクスを使用できますが、 Unity Catalogによって提供されるガバナンスを使用できます。

ただし、次のような一部の Unity Catalog 機能は、フェデレーション テーブルでは使用できません。

  • Unity Catalogマネージドテーブルでのみ利用可能な機能(予測的最適化など)。

  • ベクトル検索, Delta Sharing, レイクハウス モニタリング, and online tables.

  • 一部のフィーチャ ストア機能 (フィーチャ ストアの作成、モデルサービングの作成、フィーチャ スペックの作成、モデルのログ記録、バッチ スコアリングなど)。

パフォーマンスは、Unity Catalog Hive metastoreHive metastoreとUnity Catalog の両方がフェデレーテッドテーブルのクエリパス上にあるため、 や のワークロードよりもわずかに低下する可能性があります。

サポートされている機能の詳細については 、「要件、サポートされている機能、制限事項」を参照してください。

でフェデレーションHive metastore Databricksカタログに書き込むとはどういう意味ですか?

書き込みは、フェデレーテッド内部 Hive メタストアでのみサポートされ、外部 Hive メタストアや AWS Glue ではサポートされていません。

フェデレーション メタストアへの書き込みには、次の 2 種類があります。

  • CREATE TABLEALTER TABLEDROP TABLEなどの DDL 操作。

    DDL 操作は、基になる Hive metastoreに同期的に反映されます。 例えば、CREATE TABLE ステートメントを実行すると、 Hive metastore カタログとフェデレーテッド・カタログの両方にテーブルが作成されます。

    警告

    これは、DROPコマンドが Hive metastoreに反映されることも意味します。 たとえば、DROP SCHEMA mySchema CASCADE は、UNDROP をサポートしていないHive metastoreため、UNDROP オプションを使用せずに、基になる Hive metastore スキーマ内のすべてのテーブルを削除します。

  • INSERTUPDATEDELETEなどの DML 操作。

    DML 操作は、基になる Hive metastore テーブルにも同期的に反映されます。 たとえば、INSERT INTOを実行すると、 Hive metastoreのテーブルにレコードが追加されます。

    書き込みサポートは、 Hive metastore から Unity Catalogへの移行中にシームレスな移行を可能にするための鍵です。 「 Hive metastoreへの移行中に フェデレーションをどのように使用しますか?Unity Catalog 」を参照してください。

フェデレーションはどのように設定しますHive metastore

Hive metastoreフェデレーションを設定するには、次の操作を行います。

  1. にアクセスするためのパスと資格情報を指定する 接続 Unity CatalogHive metastoreを で作成します。

    Hive metastore フェデレーションは、この接続を使用して Hive metastoreをクロールします。 ほとんどのデータベースシステムでは、ユーザ名とパスワードを入力します。 AWS Glue の場合は、IAMロールを提供します。従来の内部 Databricks ワークスペース Hive metastoreへの接続の場合、 Hive metastore フェデレーションが承認を処理します。

  2. ストレージ認証情報 と、Unity Catalog に登録されているテーブルへのパスの 外部ロケーション をHive metastore に作成します。

    外部ロケーションには、パスと、それらのパスにアクセスするために必要な ストレージ認証情報 が含まれます。 Unity Catalogストレージ資格情報は、IAM ロールなどの資格情報を指定して、クラウド ストレージにアクセスするためのセキュリティ保護可能なオブジェクト です。外部ロケーションを作成するために選択したワークフローによっては、外部ロケーションを作成する前にストレージ認証情報を作成する必要がある場合があります。

  3. Unity Catalog で フェデレーション カタログ を作成します (手順 1 で作成した接続を使用します)。

    これは、ワークスペース ユーザーとワークフローがHive metastore を使用してUnity Catalog テーブルを操作するために使用するカタログです。フェデレーション カタログを作成すると、 Unity Catalog Hive metastoreに登録されているテーブルがカタログに入力されます。

  4. Unity Catalog を使用して、フェデレーション カタログ内のテーブルに特権を付与します。

    また、Unity Catalog の行フィルターと列フィルターを使用して、きめ細かなアクセス制御を行うこともできます。

  5. データのクエリを開始します。

    Unity Catalog を使用したフェデレーテッドデータへのアクセスは、外部 Hive メタストアと AWS Glue メタストアでは読み取り専用、内部 Hive メタストアでは読み取りと書き込みが可能です。

    内部 Hive メタストア、外部 Hive メタストア、および Glue メタストアの場合、 Unity Catalog は、 Hive metastoreでテーブル メタデータが変更されるたびに継続的に更新します。 内部メタストア Hive の場合、フェデレーテッド・カタログからコミットされた新しい表と表の更新は Hive metastoreに書き戻され、 Unity Catalog カタログと Hive metastore ・カタログの間の完全な相互運用性が維持されます。

詳細な手順については、以下を参照してください。

Hive metastoreへの移行中にUnity Catalog フェデレーションをどのように使用しますか?

Hive metastore フェデレーションを使用すると、チームとワークロード間の調整の必要性を減らすことで、 Unity Catalog に段階的に移行できます。 特に、 Databricks ワークスペースの内部 Hive metastoreから移行する場合は、 Hive metastore メタストアと Unity Catalog メタストアの両方に対して読み取りと書き込みを行うことができるため、移行中に「ミラーリングされた」メタストアを維持でき、次の利点があります。

  • フェデレーションカタログに対して実行されるワークロードは、 Hive metastore 互換性モードで実行されるため、移行中のコード適応のコストが削減されます。

  • 各ワークロードは、移行期間中、データが Hive metastore と Unity Catalogの両方で利用可能になることを知って、他のワークロードとは独立して移行することを選択できます。これにより、相互に依存するワークロード間で調整する必要性が軽減されます。

移行のコンテキストにおける HMS フェデレーションの概要を示す図

このセクションでは、 Databricks ワークスペースの内部レガシ Hive metastore を Unity Catalogに移行するための一般的なワークフローについて説明します。 Hive metastore フェデレーションによって移行が容易になります。 外部 Hive または AWS Glue メタストアの移行には適用されません。 外部 Hive メタストアのフェデレーション カタログでは、書き込みはサポートされていません。

ステップ 1: 内部Hive metastore をフェデレーションする

この手順では、 で をミラーリングするフェデレーションHive metastore Unity Catalogカタログを作成します。それを hms_in_ucと呼びましょう。

Hive metastoreで実行されているワークロードと、ミラーリングされたUnity Catalogフェデレーションカタログの存在を示す図 hms_in_uc

注:

フェデレーション プロセスの一環として、クラウド ストレージ内のデータへのアクセスを提供する外部ロケーションを設定します。 一部のワークロードがレガシ アクセス メカニズムを使用してデータをクエリし、他のワークロードが Unity Catalogで同じデータをクエリする移行シナリオでは、外部ロケーションに対する Unity Catalog管理アクセス制御により、レガシ ワークロードが Unity Catalog対応コンピュートからストレージへのパスにアクセスするのを防ぐことができます。 これらの外部ロケーションで "フォールバック モード" を有効にして、レガシ ワークロードに対して定義された任意のクラスタリングまたはノートブック スコープの資格情報にフォールバックできます。 その後、移行が完了したら、フォールバック モードをオフにします。 フォールバック・モードとはを参照してください

詳細については、「従来のワークスペースHive metastoreのHive metastoreフェデレーションを有効にする」を参照してください。

ステップ2.Unity Catalog のフェデレーション カタログに対して新しいワークロードを実行するRun new workloads against the federated catalog in Unity Catalog

フェデレーション カタログが配置されている場合は、 SQL アナリストとデータ サイエンス コンシューマーにアクセス権を付与し、それを指す新しいワークロードの開発を開始できます。 新しいワークロードには、アクセス制御、検索、リネージなど、 Unity Catalogの追加機能セットがあります。

Hive metastoreで実行されている既存のワークロードと、ミラーリングされたUnity Catalogフェデレーションカタログで実行されている新しいワークロードを示す図 hms_in_uc

この手順では、通常、次の操作を行います。

  • Unity Catalog と互換性のあるコンピュート (つまり、シングルユーザーまたは共有クラスタリング アクセス モード、 SQLウェアハウス、またはサーバレス コンピュート) を選択します。 要件、サポートされている機能、および制限事項を参照してください。

  • フェデレーション カタログをコンピュート リソースのデフォルト カタログ にするか、コードの先頭に USE CATALOG hms_in_uc を追加します。 フェデレーテッドカタログのスキーマとテーブル名は、 Hive metastoreのスキーマとテーブル名と完全にミラーされているため、コードはフェデレーテッドカタログを参照するようになります。

ステップ3.既存のジョブを移行して、フェデレーション カタログに対して実行する

既存のジョブを移行してフェデレーションカタログをクエリするには:

  1. ジョブ クラスタリングのデフォルト カタログを hms_in_ucに変更します。これには、クラスタリング自体にプロパティを設定するか、コードの先頭に USE CATALOG hms_in_uc を追加します。

  2. ジョブをシングルユーザーモードまたは共有アクセスモードのコンピュートに切り替えて、 フェデレーションをサポートするDatabricks Runtime Hive metastoreバージョンのいずれかにアップグレードします。要件、サポートされている機能、および制限事項を参照してください。

  3. Databricks管理者に依頼して、hms_in_uc内のデータオブジェクトと、ジョブがアクセスするクラウドストレージパス(Unity Catalog外部ロケーションに含まれる)に対する正しいUnity Catalog権限を付与してもらいます。「Unity Catalog での特権の管理」を参照してください。

図の 2 番目のインスタンスは、移行のコンテキストにおける HMS フェデレーションの概要を示しています

ステップ4.Hive metastore へのアクセスを拒否する

フェデレーション カタログをクエリするためにすべてのワークロードを移行すると、 Hive metastoreは不要になります。 従来のテーブルアクセスコントロール とコンピュートの権限を使用して、 Databricks ワークスペースから Hive metastoreへの直接アクセスをブロックできます。 たとえば、次のことができます。

  1. Hive metastoreカタログ内のオブジェクトに対するすべての権限を取り消します。

    この目的には、 MSCK REPAIR PRIVILEGES コマンドが便利です。 「Msck REPAIR PRIVILEGES とHive metastore の特権とセキュリティ保護可能なオブジェクト (レガシ)」を参照してください。

  2. ユーザーがテーブルアクセスコントロール (分離なし、共有アクセス モード、または従来のカスタム クラスタリングの種類を使用するクラスタリング) をバイパスするクラスタリングを作成および使用できないようにします。

    「テーブルアクセスコントロールの強制」を参照してください。

  3. フェデレーションカタログをワークスペースのデフォルトカタログにします。

    「デフォルトカタログの管理」を参照してください

Unity Catalogが真実のソースであり、Hive metastoreワークスペース ユーザーから分離されていることを示す図

よくある質問

次のセクションでは、フェデレーションに関する詳細な情報 Hive metastore 説明します。

フォールバックモードとは何ですか?

フォールバックモードは、Unity Catalogへの移行中にUnity Catalog権限チェックをバイパスするために使用できる外部ロケーションの設定です。この設定により、まだ移行されていないワークロードがセットアップ フェーズ中に影響を受けないようにします。

Unity Catalog は、クラウドストレージアカウントにアクセスするためのパスと資格情報を定義するセキュリティ保護可能なオブジェクトである外部ロケーションを使用して、クラウドストレージにアクセスできます。 それらに対するアクセス許可 ( READ FILESなど) を発行して、パスを使用できるユーザーを制御できます。 移行プロセス中の課題の 1 つは、パスを参照する既存の移行されていないワークロードがある場合など、Unity Catalog がパスへのすべてのアクセスの管理をすぐに開始しないようにする可能性があることです。

フォールバック モードを使用すると、外部ロケーションに対するアクセス制御 Unity Catalog 厳格な適用を遅らせることができます。 フォールバックモードが有効になっている場合、パスにアクセスするワークロードは最初に Unity Catalog 権限に対してチェックされ、失敗した場合は、インスタンスプロファイルや Apache Spark 設定プロパティなど、クラスタリングまたはノートブックスコープの認証情報を使用してフォールバックします。 これにより、既存のワークロードは、現在の資格情報を引き続き使用できます。

フォールバック モードは、移行中の使用のみを目的としています。 すべてのワークロードが移行され、Unity Catalog のアクセス制御を適用する準備ができたら、オフにする必要があります。

認証パスとは何ですか?

フェデレーテッド・カタログを作成すると、Hive metastore ・テーブルが保管されているクラウド・ストレージへの 認証パス を指定するように求められます。Hive metastoreフェデレーションを使用してアクセスするテーブルは、これらのパスでカバーされている必要があります。Databricks では、承認されたパスを多数のテーブルに共通のサブパスにすることをお勧めします。 たとえば、 s3://bucket/table1s3://bucket/table2s3://bucket/table3にテーブルがある場合は、 s3://bucket/ を認証パスとして指定する必要があります。

UCX を使用すると、Hive metastoreに存在するパスを識別できます。

許可されたパスは、カタログ所有者がユーザーがフェデレーションを使用してアクセスできるデータにガードレールを適用できるようにすることで、フェデレーション・カタログにセキュリティーのレイヤーを追加します。 これは、 Hive metastore でユーザーがメタデータを更新し、テーブルの場所を任意に変更できる場合 (それ以外の場合はフェデレーション カタログに同期される更新) に便利です。 このシナリオでは、ユーザーは既にアクセス権を持っているテーブルを再定義して、他の方法ではアクセスできない新しい場所を指すようにする可能性があります。

UCX を使用して Hive メタストアをフェデレーションできますか?

ワークスペースを に移行するための Labs プロジェクトである UCX には、DatabricksDatabricksUnity Catalog フェデレーションを有効にするためのユーティリティが含まれています。Hive metastore

  • enable-hms-federation

  • create-federated-catalog

GitHub のプロジェクトの readme を参照してください。UCX の概要については、「 UCX ユーティリティを使用してワークスペースを Unity Catalog にアップグレードする」を参照してください。

要件、サポートされている機能、および制限事項

次の表に、 Hive metastore フェデレーションでサポートされているサービスと機能を示します。 場合によっては、サポートされていないサービスや機能も一覧表示されます。 これらの表では、「HMS」は Hive metastoreを表します。

カテゴリー

サポート

サポートされていない

メタストア

  • レガシ ワークスペース Hive メタストア (Databricks の内部)

  • Apache Hive バージョン 0.13 または 2.3 の mySQL を使用した外部メタストア

  • AWS Glue

  • mySQL 以外のデータベース内の外部メタストア

  • Hive 3.1

オペレーション

  • 内部 Databricks HMS: 読み取りと書き込み

  • 外付けHMS:読み取り専用

  • AWS Glue: 読み取り専用

データ資産のHive metastore

  • Hive metastore の Managed テーブルと外部テーブル

  • ビュー

  • Hive SerDe テーブル

  • Hive 関数と UDFs

  • フェデレーテッド・カタログでの新しいシャロー・クローンの定義

  • JDBC でサポートされるテーブル

  • Delta Sharing 共有テーブル

ストレージ

  • AWS S3の

  • DBFSマウント場所を参照するテーブル (DBFSルートを含む)

  • 外部ロケーションで定義された他の HMS テーブルパスとパスが重複するテーブル

  • パスがネイティブの Unity Catalog オブジェクト パスと重複する HMS テーブル

  • DBFSルート内のテーブル、または外部HMSまたはAWS Glue に登録されているマウント場所へのアクセス

  • DBFSルート内のテーブルまたはマウント場所へのアクセスは、内部HMSが定義されているワークスペース以外のワークスペースから

コンピュートの種類

  • 共有クラスタリング

  • Single user (assigned) クラスタリング

  • サーバレス (all)

  • SQLウェアハウス (すべて)

No isolation クラスタリング

コンピュートバージョン

  • 全 Databricks SQL チャンネル

  • Delta Live Tables preview チャンネル

  • Databricks Runtime 13.3 LTS

  • Databricks Runtime 14.3 LTS

  • Databricks Runtime 15.1 以降

現在のチャンネルDelta Live Tables

Unity Catalog の機能

  • Unity Catalog の特権モデル

  • 行フィルターと列マスク

  • 聴講

  • ダウンストリームリネージ

  • テーブル検索

  • ワークスペース間のアクセス(ルートとマウントを除く DBFS)

  • データアクセスは定義された外部ロケーションに制限されています

  • Delta Sharing

  • Lakehouseモニタリング

  • ベクトル検索

  • オンラインテーブル

  • 一部のフィーチャーストア機能 (フィーチャーストアの作成、モデルサービングの作成、フィーチャースペックの作成、モデルロギング、バッチスコアリングなど)

  • Delta Live Tables の具体化されたビューとストリーミング テーブル

  • レガシ テーブル ACL のフェデレーション カタログの Unity Catalog 特権への自動移行。 UCX はこれを支援します。