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 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 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 TABLE
、ALTER TABLE
、DROP TABLE
などのDDL操作。DDL 操作は、基礎となる Hive metastoreに同期的に反映されます。 たとえば、
CREATE TABLE
ステートメントを実行すると、 Hive metastore とフォーリンカタログの両方にテーブルが作成されます。
これは、 DROP
コマンドが Hive metastoreに反映されることも意味します。 たとえば、DROP SCHEMA mySchema CASCADE
は UNDROP
をサポートしていないため、UNDROP
オプションなしで、基礎となるHive metastoreスキーマ内のすべてのテーブルHive metastore削除します。
-
INSERT
、UPDATE
、DELETE
などのDML操作。DML 操作は、基になる Hive metastore テーブルにも同期的に反映されます。 たとえば、
INSERT INTO
を実行すると、 Hive metastoreのテーブルにレコードが追加されます。書き込みサポートは、 Hive metastore から Unity Catalogへの移行中にシームレスに移行するための鍵です。 「Unity Catalogへの移行中にHive metastoreフェデレーションを使用する方法」を参照してください。
フェデレーション Hive metastore どのように設定しますか?
フェデレーションを設定するには、次の Hive metastore を行います。
-
Hive metastoreにアクセスするためのパスと資格情報を指定する接続を Unity Catalog で作成 します。
フェデレーションHive metastoreこの接続を使用してHive metastoreをクロールします。ほとんどのデータベース・システムでは、ユーザー名とパスワードを指定します。AWS Glueの場合、IAMロールを指定します。従来の内部 Databricks ワークスペース Hive metastoreへの接続の場合、フェデレーション Hive metastore 承認を処理します。
-
Hive metastoreに登録されているテーブルへのパスのストレージ 資格情報 と 外部ロケーション を Unity Catalog に作成します。
外部ロケーションには、パスと、それらのパスにアクセスするために必要な ストレージ資格情報 が含まれます。 ストレージ資格情報は、クラウド ストレージにアクセスするための資格情報 (IAMロールなど) を指定するセキュリティ保護可能なオブジェクトUnity Catalogです。外部ロケーションを作成するために選択したワークフローによっては、外部ロケーションを作成する前にストレージ資格情報を作成する必要がある場合があります。
-
ステップ 1 で作成した接続を使用して、 Unity Catalogでフォーリンカタログを作成します。
これは、ワークスペース ユーザーとワークフローが Unity Catalogを使用してテーブルHive metastore操作するために使用するカタログです。フォーリンカタログを作成すると、 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 メタストアのHive メタストアフェデレーションを有効にする
- 外部HiveメタストアのHiveメタストアフェデレーションを有効にする
- AWS GlueメタストアのHiveメタストアフェデレーションを有効にする
Unity Catalogへの移行中にHive metastoreフェデレーションをどのように使用しますか?
フェデレーションHive metastore、チームとワークロード間の調整の必要性を減らすことで、段階的に Unity Catalog に移行できます。特に、 Databricks ワークスペースの内部 Hive metastoreから移行する場合、 Hive metastore メタストアと Unity Catalog メタストアの両方に対して読み取りと書き込みを行うことができるため、移行中に「ミラーリングされた」メタストアを維持でき、次の利点が得られます。
- フォーリンカタログに対して実行されるワークロードは、 Hive metastore 互換モードで実行されるため、移行中のコード適応のコストが削減されます。
- 各ワークロードは、移行期間中、データが Hive metastore と Unity Catalogの両方で利用可能になることを認識しているため、他のワークロードから独立して移行することを選択できます。これにより、相互に依存しているワークロード間で調整する必要性が軽減されます。
このセクションでは、Databricks ワークスペースの内部レガシー Hive metastore を Hive metastoreUnity Catalogに移行するための一般的なワークフローについて説明します。外部 Hive または AWS Glue メタストアの移行には適用されません。フォーリンカタログ for external Hive metastores は書き込みをサポートしていません。
ステップ 1: 内部Hive metastoreをフェデレーションする
このステップでは、Unity CatalogのHive metastoreをミラーリングするフォーリンカタログを作成します。hms_in_uc
と呼ぼう。
フェデレーション プロセスの一環として、クラウド ストレージ内のデータへのアクセスを提供する外部ロケーションを設定します。 一部のワークロードがレガシ アクセス メカニズムを使用してデータをクエリし、他のワークロードが Unity Catalogで同じデータをクエリする移行シナリオでは、外部ロケーションに対する Unity Catalog管理アクセス制御により、レガシ ワークロードが Unity Catalog対応コンピュートからストレージへのパスにアクセスするのを防ぐことができます。 これらの外部ロケーションで "フォールバック モード" を有効にして、レガシ ワークロードに対して定義された任意のクラスターまたはノートブック スコープの資格情報にフォールバックできます。 その後、移行が完了したら、フォールバック モードをオフにします。 フォールバック・モードとはを参照してください。
詳しくは、 レガシーワークスペースHive metastoreのHive metastoreフェデレーションを有効にするを参照してください。
ステップ 2.実行 新しいワークロード against フォーリンカタログ 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
を追加します。 - ジョブを標準または専用アクセスモードコンピュートに切り替え、Hive metastoreフェデレーションをサポートするDatabricks Runtimeバージョンのいずれかにアップグレードします。「要件と機能のサポート」を参照してください。
- Databricks管理者に、
hms_in_uc
内のデータオブジェクトと、ジョブがアクセスするクラウドストレージパス(外部ロケーションに含まれる)に対する正しいUnity Catalog権限Unity Catalog付与するように依頼します。「 Unity Catalog での特権の管理」を参照してください。
ステップ 4.Hive metastoreへの直接アクセスを無効にする
すべてのワークロードを移行してフォーリンカタログをクエリすると、 Hive metastoreは不要になります。
-
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 メタストアをフェデレーションできますか?
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 metastore |
これには、「 外部テーブルのファイル形式」に記載されているすべてのデータ形式のテーブルが含まれ、Apache Iceberg テーブルが追加されています (フェデレーション外部 Hive メタストアと AWS Glue のみ)。Iceberg のサポートはパブリック プレビューです。Iceberg テーブルの制限を参照してください。
AWS Athena や Presto などの他のシステムによって作成されたテーブルやビューへのアクセスは、特に Spark SQL 構文で作成されていない場合、Databricks Runtime や Spark では機能しない可能性があります。他のシステムで作成された表およびビューへのアクセスを参照してください。
|
|
ストレージ |
|
|
コンピュートの種類 |
| No isolation クラスター |
コンピュートバージョン |
| |
Unity Catalog の機能 |
|
|
浅いクローンの操作
プレビュー
シャロークローンのサポートは パブリックプレビュー段階です。
Hive metastore フェデレーションは、 Hive metastoreに登録されたテーブルからのシャロークローンの作成をサポートしていますが、次の注意点があります。
-
Hive metastoreフェデレーションカタログからシャロークローンを読み取ると、クローンはプロビジョニング状態
DEGRADED
になります。これは、シャロークローンが Hive 権限モデルを使用していることを示しており、シャロークローンテーブルから読み込むユーザーは、シャロークローンとベーステーブルの両方に対するSELECT
権限を持っている必要があります。シャロークローンを Unity Catalog 権限モデルと整合性を持たせるようにアップグレードするには、テーブル所有者が実行
REPAIR TABLE <table> SYNC METADATA
必要があります。 コマンドが実行されると、テーブルのプロビジョニング状態がACTIVE
に変わり、その後アクセス許可は Unity Catalog によって制御されます。シャロークローンでの後続の読み取りでは、コマンドが conピュート supported conピュート で実行されている限り、シャロークローン自体でのみSELECT
Unity Catalog必要があります。 -
DBFS で作成された、または DBFS にマウントされたテーブルに基づいて作成されたシャロー クローンはサポートされていません。
制限
- フェデレーテッド・テーブルのロケーションの外部にテーブル・ファイルが格納されているフェデレーテッド・テーブルは、クエリを実行できません。これには、パーティションがテーブルの場所の外部に格納されているテーブルや、Avro テーブルの場合は
avro.schema.url
テーブル プロパティを使用してスキーマが参照されるテーブルが含まれます。このようなテーブルをクエリすると、UNAUTHORIZED_ACCESS
またはAccessDeniedException
の例外がスローされる場合があります。