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 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 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 TABLE
、ALTER TABLE
、DROP TABLE
などの DDL 操作。DDL 操作は、基になる Hive metastoreに同期的に反映されます。 たとえば、
CREATE TABLE
ステートメントを実行すると、 Hive metastore とフォーリンカタログの両方にテーブルが作成されます。
これは、DROP
コマンドが Hive metastoreに反映されることも意味します。 たとえば、DROP SCHEMA mySchema CASCADE
は、UNDROP
をサポートしていないHive metastoreため、UNDROP
オプションを使用せずに、基になる Hive metastore スキーマ内のすべてのテーブルを削除します。
-
INSERT
、UPDATE
、DELETE
などの DML オペレーション。DML 操作は、基になる Hive metastore テーブルにも同期的に反映されます。 たとえば、
INSERT INTO
を実行すると、 Hive metastoreのテーブルにレコードが追加されます。書き込みサポートは、 Hive metastore から Unity Catalogへの移行中にシームレスな移行を可能にするための鍵です。 「Hive metastoreへの移行中に フェデレーションをどのように使用しますか?Unity Catalog 」を参照してください。
フェデレーションはどのように設定しますHive metastore
Hive metastoreフェデレーションを設定するには、次の操作を行います。
-
にアクセスするためのパスと資格情報を指定する 接続 Unity CatalogHive metastoreを で作成します。
Hive metastore フェデレーションは、この接続を使用して Hive metastoreをクロールします。 ほとんどのデータベースシステムでは、ユーザ名とパスワードを入力します。 AWS Glueの場合は、IAMロールを提供します。従来の内部 Databricks ワークスペース Hive metastoreへの接続の場合、 Hive metastore フェデレーションが承認を処理します。
-
ストレージ認証情報 と、Unity Catalog に登録されているテーブルへのパスの 外部ロケーション をHive metastore に作成します。
外部ロケーションには、パスと、それらのパスにアクセスするために必要な ストレージ認証情報 が含まれます。 Unity Catalogストレージ資格情報は、IAM ロールなどの資格情報を指定して、クラウド ストレージにアクセスするためのセキュリティ保護可能なオブジェクト です。外部ロケーションを作成するために選択したワークフローによっては、外部ロケーションを作成する前にストレージ認証情報を作成する必要がある場合があります。
-
Unity Catalogで、ステップ 1 で作成した接続を使用してフォーリンカタログを作成します。
これは、ワークスペース ユーザーとワークフローがHive metastore を使用してUnity Catalog テーブルを操作するために使用するカタログです。フォーリンカタログを作成すると、 Unity Catalog Hive metastoreに登録されているテーブルがフォーリンカタログに入力されます。
-
フォーリンカタログのテーブルに権限を付与するには、 Unity Catalogを使用します。
また、Unity Catalog の行フィルターと列フィルターを使用して、きめ細かなアクセス制御を行うこともできます。
-
データのクエリを開始します。
を使用したフォーリンテーブルへのアクセスは、外部メタストアとUnity Catalog HiveAWSGlueメタストア は読み取り専用で、内部メタストアHive メタストアは読み取りと書き込みです。
内部 Hive メタストア、外部 Hive メタストア、および Glue メタストアの場合、 Unity Catalog は、 Hive metastoreでテーブルメタデータが変更されると、 で継続的に更新します。 内部メタストア Hive の場合、フォーリンカタログからコミットされた新しいテーブルとテーブルの更新は Hive metastoreに書き戻され、 Unity Catalog カタログと Hive metastore カタログの間の完全な相互運用性が維持されます。
詳細な手順については、以下を参照してください。
- 従来のワークスペース Hive metastoreのHive metastoreフェデレーションを有効にする
- 外部HiveメタストアのHiveメタストアフェデレーションを有効にする
- AWS GlueメタストアのHiveメタストアフェデレーションを有効にする
Hive metastoreへの移行中にUnity Catalog フェデレーションをどのように使用しますか?
Hive metastore フェデレーションを使用すると、チームとワークロード間の調整の必要性を減らすことで、 Unity Catalog に段階的に移行できます。 特に、 Databricks ワークスペースの内部 Hive metastoreから移行する場合は、 Hive metastore メタストアと Unity Catalog メタストアの両方に対して読み取りと書き込みを行うことができるため、移行中に「ミラーリングされた」メタストアを維持でき、次の利点があります。
- フォーリンカタログに対して実行されるワークロードは、 Hive metastore 互換性モードで実行され、移行中のコード適応のコストを削減します。
- 各ワークロードは、移行期間中、データが Hive metastore と Unity Catalogの両方で利用可能になることを知って、他のワークロードとは独立して移行することを選択できます。これにより、相互に依存するワークロード間で調整する必要性が軽減されます。
このセクションでは、 Databricks ワークスペースの内部レガシ Hive metastore を Unity Catalogに移行するための一般的なワークフローについて説明します。 Hive metastore フェデレーションによって移行が容易になります。 外部 Hive または AWS Glue メタストアの移行には適用されません。外部メタストア Hive のフォーリンカタログは書き込みをサポートしていません。
ステップ 1: 内部Hive metastoreをフェデレーションする
この手順では、Hive metastore で を反映するフォーリンカタログを作成します。Unity Catalogそれを hms_in_uc
と呼びましょう。
フェデレーション プロセスの一環として、クラウド ストレージ内のデータへのアクセスを提供する外部ロケーションを設定します。 一部のワークロードがレガシ アクセス メカニズムを使用してデータをクエリし、他のワークロードが Unity Catalogで同じデータをクエリする移行シナリオでは、外部ロケーションに対する Unity Catalog管理アクセス制御により、レガシ ワークロードが Unity Catalog対応コンピュートからストレージへのパスにアクセスするのを防ぐことができます。 これらの外部ロケーションで "フォールバック モード" を有効にして、レガシ ワークロードに対して定義された任意のクラスターまたはノートブック スコープの資格情報にフォールバックできます。 その後、移行が完了したら、フォールバック モードをオフにします。 フォールバック・モードとはを参照してください。
詳細については、「従来のワークスペースHive metastoreのHive metastoreフェデレーションの有効化」を参照してください。
ステップ2.Unity Catalog のフォーリンカタログに対して新しいワークロードを実行
フォーリンカタログが用意できたら、 SQL アナリストとデータサイエンスのコンシューマーにアクセス権を付与し、フォーリンカタログを指す新しいワークロードの開発を開始できます。 新しいワークロードには、アクセス制御、検索、リネージなど、 Unity Catalogの追加機能セットがあります。
この手順では、通常、次の操作を行います。
- Unity Catalog と互換性のあるコンピュート (つまり、標準または専用のコンピュート アクセス モード、 SQLウェアハウス、またはサーバレス コンピュート) を選択します。 要件、サポートされている機能、および制限事項を参照してください。
- フォーリンカタログをコンピュート リソースのデフォルト カタログ にするか、コードの先頭に
USE CATALOG hms_in_uc
を追加します。 フォーリンカタログのスキーマとテーブル名は、 Hive metastoreのスキーマとテーブル名とまったく同じであるため、コードはフォーリンカタログを参照するようになります。
ステップ3.既存のジョブをフォーリンカタログに対して実行するための移行
既存のジョブを移行してフォーリンカタログをクエリするには:
- ジョブ クラスターのデフォルト カタログを
hms_in_uc
に変更します。これには、クラスター自体にプロパティを設定するか、コードの先頭にUSE CATALOG hms_in_uc
を追加します。 - ジョブを標準または専用アクセスモードのコンピュートに切り替えて、 連携に対応したDatabricks Runtime Hive metastoreバージョンのいずれかにアップグレードしてください。要件、サポートされている機能、および制限事項を参照してください。
- Databricks管理者に依頼して、
hms_in_uc
内のデータオブジェクトと、ジョブがアクセスするクラウドストレージパス(Unity Catalog外部ロケーションに含まれる)に対する正しいUnity Catalog権限を付与してもらいます。「Unity Catalog での特権の管理」を参照してください。
ステップ4.Hive metastoreへのアクセスを拒否する
フォーリンカタログをクエリするためにすべてのワークロードを移行すると、 Hive metastoreは不要になります。 従来のテーブルアクセスコントロール とコンピュートの権限を使用して、 Databricks ワークスペースから Hive metastoreへの直接アクセスをブロックできます。 たとえば、次のことができます。
-
Hive metastoreカタログ内のオブジェクトに対するすべての権限を取り消します。
この目的には、
MSCK REPAIR PRIVILEGES
コマンドが便利です。 Msck REPAIR PRIVILEGES とHive metastore の特権とセキュリティ保護可能なオブジェクト (レガシ) を参照してください。 -
ユーザーがコンピュート ポリシーを使用して、テーブルアクセスコントロール (分離共有アクセス モードまたは従来のカスタム クラスターの種類を使用しないクラスター) をバイパスするクラスターを作成および使用できないようにします。
「コンピュート構成の管理」を参照してください。
-
フェデレーションカタログをワークスペースのデフォルトカタログにします。
よくある質問
次のセクションでは、フェデレーションに関する詳細な情報 Hive metastore 説明します。
フォールバックモードとは何ですか?
フォールバックモード は、Unity Catalogへの移行中にUnity Catalog権限チェックをバイパスするために使用できる外部ロケーションの設定です。この設定により、まだ移行されていないワークロードがセットアップ フェーズ中に影響を受けないようにします。
Unity Catalog は、クラウドストレージアカウントにアクセスするためのパスと資格情報を定義するセキュリティ保護可能なオブジェクトである外部ロケーションを使用して、クラウドストレージにアクセスできます。 それらに対するアクセス許可 ( READ FILES
など) を発行して、パスを使用できるユーザーを制御できます。 移行プロセス中の課題の 1 つは、パスを参照する既存の移行されていないワークロードがある場合など、Unity Catalog がパスへのすべてのアクセスの管理をすぐに開始しないようにする可能性があることです。
フォールバック モードを使用すると、外部ロケーションに対するアクセス制御 Unity Catalog 厳格な適用を遅らせることができます。 フォールバックモードが有効になっている場合、パスにアクセスするワークロードは最初に Unity Catalog 権限に対してチェックされ、失敗した場合は、インスタンスプロファイルや Apache Spark 設定プロパティなど、クラスターまたはノートブックスコープの認証情報を使用してフォールバックします。 これにより、既存のワークロードは、現在の資格情報を引き続き使用できます。
フォールバック モードは、移行中の使用のみを目的としています。 すべてのワークロードが移行され、Unity Catalog のアクセス制御を適用する準備ができたら、オフにする必要があります。
フォールバックの使用状況の監査ログのクエリ
次のクエリを使用して、過去 30 日間にフォールバック モードを使用した外部ロケーションへのアクセスがあるかどうかを確認します。 アカウントにフォールバック モード アクセスがない場合、Databricks ではフォールバック モードをオフにすることをお勧めします。
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/table1
、 s3://bucket/table2
、 s3://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 metastore |
|
|
ストレージ |
|
|
コンピュートの種類 |
| No isolation クラスター |
コンピュートバージョン |
| |
Unity Catalog の機能 |
|
|
浅いクローンでの作業
プレビュー
シャロークローンのサポートは パブリック プレビュー段階です。
Hive metastore フェデレーションでは、 Hive metastoreに登録されたテーブルからの浅いクローンの作成がサポートされていますが、次の点に注意してください。
-
Hive metastore 統合カタログからシャロークローンを読み取ると、クローンは
DEGRADED
プロビジョニング状態になります。これは、シャロークローンが Hive パーミッションモデルを使用していることを示しており、シャロークローンテーブルから読み取るユーザーは、シャロークローンとベーステーブルの両方に対するSELECT
権限を持っている必要があります。シャロークローンをアップグレードして Unity Catalog アクセス許可モデルと一貫性を持たせるには、テーブルの所有者が
REPAIR TABLE <table> SYNC METADATA
を実行する必要があります。 コマンドの実行後、テーブルのプロビジョニング状態はACTIVE
に変わり、その後、アクセス許可は Unity Catalog によって制御されます。その後のシャロークローンの読み取りでは、 Unity Catalogをサポートするコンピュートでコマンドが実行されている限り、シャロークローン自体でのみSELECT
が必要です。 -
DBFS で作成されたシャロー・クローン、または DBFS にマウントされた表に基づくシャロー・クローンはサポートされていません。