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

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

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

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

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

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

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

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

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

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

フェデレーションでは、Databricks ワークスペースからHive metastoreへの接続Hive metastore作成し、Unity CatalogHive metastoreをクロールしてフォーリンカタログ ( フェデレーションカタログ とも呼ばれます) にデータを取り込み、組織が Unity CatalogでHive metastoreテーブルを操作できるようにし、一元化されたアクセス制御を提供します。 リネージ、検索など。

AWS Glue を含む Databricks ワークスペースの外部にあるフェデレーション Hive メタストアでは、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の external テーブルとフォーリンテーブルの違いについて説明します。

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

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

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

  • Hive metastoreのクロールに基づいて自動的に検出されます。テーブルが Hive metastoreで作成されるとすぐに、テーブルが表示され、フォーリンカタログ Unity Catalog でクエリできるようになります。
  • Hive SerDes やパーティションなどの Hive セマンティクスを使用してテーブルを定義できるようにします。
  • フォーリンカタログでテーブルが他のテーブルと重複するパスを持つことを許可します。
  • テーブルを DBFSルート の場所に配置できるようにします。
  • Hive metastoreで定義されているビューを含めます。

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

ただし、フォーリンテーブルでは一部の Unity Catalog 機能が使用できません。

  • 予測的最適化など、 Unity Catalog マネージドテーブルでのみ使用できる機能。
  • ベクトル検索、 Delta Sharing、レイクハウス モニタリング、オンラインテーブル。
  • 特徴ストアの作成、モデルサービングの作成、特徴仕様の作成、モデルのログ記録、バッチスコアリングなど、一部の特徴ストア機能。

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

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

フェデレーテッド Hive metastoreでフォーリンカタログに書くとはどういう意味ですか?

書き込みは、フェデレーションされた内部 Hive メタストアでのみサポートされ、外部 Hive メタストアや AWS Glue ではサポートされません。

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

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

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

警告

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

  • INSERTUPDATEDELETEなどのDML操作。

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

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

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

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

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

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

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

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

  3. ステップ 1 で作成した接続を使用して、 Unity Catalogでフォーリンカタログを作成します。

    これは、ワークスペース ユーザーとワークフローが Unity Catalogを使用してテーブルHive metastore操作するために使用するカタログです。フォーリンカタログを作成すると、 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 カタログ間の完全な相互運用性が維持されます。

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

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

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

  • フォーリンカタログに対して実行されるワークロードは、 Hive metastore 互換モードで実行されるため、移行中のコード適応のコストが削減されます。
  • 各ワークロードは、移行期間中、データが Hive metastore と Unity Catalogの両方で利用可能になることを認識しているため、他のワークロードから独立して移行することを選択できます。これにより、相互に依存しているワークロード間で調整する必要性が軽減されます。

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

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

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

このステップでは、Unity CatalogのHive metastoreをミラーリングするフォーリンカタログを作成します。hms_in_ucと呼ぼう。

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

注記

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

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

ステップ 2.実行 新しいワークロード against フォーリンカタログ 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. ジョブを標準または専用アクセスモードコンピュートに切り替え、Hive metastoreフェデレーションをサポートするDatabricks Runtimeバージョンのいずれかにアップグレードします。「要件と機能のサポート」を参照してください。
  3. Databricks管理者に、hms_in_uc内のデータオブジェクトと、ジョブがアクセスするクラウドストレージパス(外部ロケーションに含まれる)に対する正しいUnity Catalog権限Unity Catalog付与するように依頼します。「 Unity Catalog での特権の管理」を参照してください。

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

ステップ 4.Hive metastoreへの直接アクセスを無効にする

すべてのワークロードを移行してフォーリンカタログをクエリすると、 Hive metastoreは不要になります。

  1. Hive metastoreへの直接アクセスを無効にします。

    Databricksワークスペースで使用されている Hiveメタストアへのアクセスを無効にするを参照してください。

  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 メタストアをフェデレーションできますか?

Databricks ワークスペースを Unity Catalogに移行するための Databricks Labs プロジェクトである UCX には、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: 読み取りと書き込み OPTIMIZEVACUUMANALYZE TABLE がサポートされています。
  • 外部HMS:読み取り専用 OPTIMIZEVACUUM がサポートされています。ANALYZE TABLE はサポートされていません。
  • AWS Glue: 読み取り専用 OPTIMIZEVACUUM がサポートされています。ANALYZE TABLE はサポートされていません。

データ資産Hive metastore

  • Hive metastoreのマネージドテーブルと外部テーブル

これには、「 外部テーブルのファイル形式」に記載されているすべてのデータ形式のテーブルが含まれ、Apache Iceberg テーブルが追加されています (フェデレーション外部 Hive メタストアと AWS Glue のみ)。Iceberg のサポートはパブリック プレビューです。Iceberg テーブルの制限を参照してください。

  • スキーマ

  • ビュー

AWS Athena や Presto などの他のシステムによって作成されたテーブルやビューへのアクセスは、特に Spark SQL 構文で作成されていない場合、Databricks Runtime や Spark では機能しない可能性があります。他のシステムで作成された表およびビューへのアクセスを参照してください。

  • Hive SerDe テーブル

  • フォーリンカタログ (パブリック プレビュー) を介して Hive metastore に登録されている浅いクローンにアクセスする。 浅いクローンの操作を参照してください。

  • フォーリンカタログでの新しい浅いクローンの定義 (パブリックプレビュー)

  • Hive 関数と UDF
  • JDBC でバックアップされたテーブル
  • Delta Sharing 共有テーブル

ストレージ

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

コンピュートの種類

  • 標準アクセスモードコンピュート(旧共有アクセスモード)
  • 専用アクセス・モード・コンピュート (旧シングル・ユーザー・アクセス・モード)
  • サーバレス (all)
  • SQLウェアハウス (all)
  • Databricks Container Services (DCS): Spark 構成で spark.databricks.unityCatalog.hms.federation.enabled true を設定する必要があります

No isolation クラスター

コンピュートバージョン

  • すべて Databricks SQL チャンネル
  • すべて Lakeflow 宣言型パイプライン チャンネル
  • Databricks Runtime 13.3 LTS
  • Databricks Runtime 14.3 LTS
  • Databricks Runtime 15.1 以降
  • Iceberg サポート用の Databricks Runtime 16.2 以降 (パブリック プレビュー)

Unity Catalog の機能

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

浅いクローンの操作

備考

プレビュー

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

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

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

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

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

制限

  • フェデレーテッド・テーブルのロケーションの外部にテーブル・ファイルが格納されているフェデレーテッド・テーブルは、クエリを実行できません。これには、パーティションがテーブルの場所の外部に格納されているテーブルや、Avro テーブルの場合は avro.schema.url テーブル プロパティを使用してスキーマが参照されるテーブルが含まれます。このようなテーブルをクエリすると、 UNAUTHORIZED_ACCESS または AccessDeniedException の例外がスローされる場合があります。