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 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 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 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 を使用したフェデレーテッドデータへのアクセスは、外部 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の両方で利用可能になることを知って、他のワークロードとは独立して移行することを選択できます。これにより、相互に依存するワークロード間で調整する必要性が軽減されます。
このセクションでは、 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 のフェデレーション カタログに対して新しいワークロードを実行するRun new workloads against the federated catalog in 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 のアクセス制御を適用する準備ができたら、オフにする必要があります。
認証パスとは何ですか?
フェデレーテッド・カタログを作成すると、Hive metastore ・テーブルが保管されているクラウド・ストレージへの 認証パス を指定するように求められます。Hive metastoreフェデレーションを使用してアクセスするテーブルは、これらのパスでカバーされている必要があります。Databricks では、承認されたパスを多数のテーブルに共通のサブパスにすることをお勧めします。 たとえば、 s3://bucket/table1
、 s3://bucket/table2
、 s3://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 metastore |
|
|
ストレージ |
|
|
コンピュートの種類 |
|
No isolation クラスタリング |
コンピュートバージョン |
|
現在のチャンネルDelta Live Tables |
Unity Catalog の機能 |
|
|