メインコンテンツまでスキップ

Hiveメタストアフェデレーション:Hiveメタストアに登録されているテーブルをUnity Catalog で管理できるようにします

この記事では、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 CatalogHive metastoreクロールしてフォーリンカタログ ( フェデレーテッドカタログとも呼ばれる) を取り込みます。これにより、組織はHive metastore 内のUnity 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 に登録する機能があります。 このセクションでは、フェデレーテッド テーブルにおける external とフォーリンテーブルの違いについて説明します Hive metastore。

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

  • クラウドストレージ内の任意の場所をテーブルとして登録するために使用できます。
  • Unity Catalog のアクセス許可ときめ細かなアクセス制御を適用できます。
  • リネージで参照するクエリを表示できます。

フェデレーション Hive metastore のフォーリンテーブルには、次のプロパティがあります。

  • 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 metastoreUnity Catalog

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

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

書き込みは、フェデレーテッド内部 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 スキーマ内のすべてのテーブルを削除します。

フェデレーションはどのように設定します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 HiveAWSGlueメタストア は読み取り専用で、内部メタストア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 のフォーリンカタログに対して新しいワークロードを実行

フォーリンカタログが用意できたら、 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. フェデレーションカタログをワークスペースのデフォルトカタログにします。

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

よくある質問

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

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

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

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

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

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

フォールバックの使用状況の監査ログのクエリ

次のクエリを使用して、過去 30 日間にフォールバック モードを使用した外部ロケーションへのアクセスがあるかどうかを確認します。 アカウントにフォールバック モード アクセスがない場合、Databricks ではフォールバック モードをオフにすることをお勧めします。

SQL
SELECT event_time, user_identity, action_name, request_params, response, identity_metadata
FROM system.access.audit
WHERE
request_params.fallback_enabled = 'true' AND
request_params.path LIKE '%some-path%' AND
event_time >= current_date() - INTERVAL 30 DAYS
LIMIT 10

認証パスとは何ですか?

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

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

承認されたパスは、 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、3.1 の外部メタストア
  • MySQL、SQL Server、または Postgres
  • AWS Glue

オペレーション

  • 内部 Databricks HMS: 読み取りと書き込み
  • 外付けHMS:読み取り専用
  • AWS Glue: 読み取り専用

データ資産のHive metastore

  • Hive metastore の Managed テーブルと外部テーブル
  • ビュー
  • Hive SerDe テーブル
  • フォーリンカタログを使用して Hive metastore に登録された浅いクローンにアクセスする (パブリック プレビュー)。 シャロークローンの操作を参照してください。
  • フォーリンカタログでの新しい浅いクローンの定義 (パブリック プレビュー)
  • Hive 関数と UDF
  • JDBC でサポートされるテーブル
  • Delta Sharing 共有テーブル

ストレージ

  • AWS S3の
  • DBFSマウント場所を参照するテーブル (DBFSルートを含む)
  • 外部ロケーションで定義された他の HMS テーブルパスとパスが重複するテーブル
  • パスがネイティブの Unity Catalog オブジェクト パスと重複する HMS テーブル
  • DBFSルート内のテーブル、または外部HMSまたはAWS Glueに登録されているマウント場所へのアクセス
  • DBFSルート内のテーブルまたはマウント場所へのアクセスは、内部HMSが定義されているワークスペース以外のワークスペースから

コンピュートの種類

  • 標準アクセスモード コンピュート (旧共有アクセスモード)
  • 専用アクセスモード コンピュート(旧シングルユーザーアクセスモード)
  • サーバレス (all)
  • SQLウェアハウス (すべて)

No isolation クラスター

コンピュートバージョン

  • 全 Databricks SQL チャンネル
  • すべて DLT チャンネル
  • Databricks Runtime 13.3 LTS
  • Databricks Runtime 14.3 LTS
  • Databricks Runtime 15.1 以降

Unity Catalog の機能

  • Unity Catalog の特権モデル
  • 行フィルターと列マスク
  • 聴講
  • ダウンストリームリネージ
  • テーブル検索
  • ワークスペース間のアクセス(ルートとマウントを除く DBFS)
  • データアクセスは定義された外部ロケーションに制限されています
  • Delta Sharing
  • Lakehouseモニタリング
  • ベクトル検索
  • オンラインテーブル
  • 一部のフィーチャーストア機能 (フィーチャーストアの作成、モデルサービングの作成、フィーチャースペックの作成、モデルロギング、バッチスコアリングなど)
  • DLT マテリアライズドビュー とストリーミングテーブルをフォーリンカタログに書き込むことはできませんが、フォーリンテーブルと views を DLT マテリアライズドビュー とストリーミングテーブルのソースとして使用できます。
  • レガシーテーブル ACL のフォーリンカタログの Unity Catalog 権限への自動移行。 UCX はこれを支援します。

浅いクローンでの作業

備考

プレビュー

シャロークローンのサポートは パブリック プレビュー段階です。

Hive metastore フェデレーションでは、 Hive metastoreに登録されたテーブルからの浅いクローンの作成がサポートされていますが、次の点に注意してください。

  • Hive metastore 統合カタログからシャロークローンを読み取ると、クローンは DEGRADED プロビジョニング状態になります。これは、シャロークローンが Hive パーミッションモデルを使用していることを示しており、シャロークローンテーブルから読み取るユーザーは、シャロークローンとベーステーブルの両方に対するSELECT権限を持っている必要があります。

    シャロークローンをアップグレードして Unity Catalog アクセス許可モデルと一貫性を持たせるには、テーブルの所有者が REPAIR TABLE <table> SYNC METADATA を実行する必要があります。 コマンドの実行後、テーブルのプロビジョニング状態は ACTIVE に変わり、その後、アクセス許可は Unity Catalog によって制御されます。その後のシャロークローンの読み取りでは、 Unity Catalogをサポートするコンピュートでコマンドが実行されている限り、シャロークローン自体でのみSELECTが必要です。

  • DBFS で作成されたシャロー・クローン、または DBFS にマウントされた表に基づくシャロー・クローンはサポートされていません。