Hive metastore従来のワークスペース の フェデレーションを有効にするHive metastore
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、レガシDatabricksHive metastore をフェデレーションして、組織がHive metastore を使用してUnity Catalog テーブルを操作できるようにする方法について説明します。
Hive metastoreHive metastoreフェデレーションの概要については、「 フェデレーション:Unity Catalog に登録されたテーブルを管理するための の有効化 」を参照してください。Hive metastore
始める前に
Hive metastore フェデレーションでサポートされているサービスと機能の一覧 (要件、サポートされている機能、制限事項) を確認します。
各ステップの具体的な要件は、以下のとおりです。
ステップ 1: Unity Catalog をHive metastore に接続する
この手順では、 Unity Catalog接続Databricks (データベース システムにアクセスするためのパスと資格情報 (この場合は ワークスペースのレガシ) を指定する セキュリティ保護可能なオブジェクト)Hive metastore を作成します。
接続を作成する
接続では、外部データベースシステムにアクセスするためのパスと認証情報を指定します。接続を作成するには、カタログエクスプローラーを使用するか、Databricksノートブックまたは Databricks SQLクエリーエディタで CREATE CONNECTION
SQLコマンドを使用できます。
注:
Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections を参照してください。 および Unity Catalog コマンド。
必要な権限:メタストア管理者またはCREATE CONNECTION
権限を持つユーザー。
Databricks ワークスペースで、[ カタログ] をクリックします。
[クイック アクセス] ページで、[データの追加] > [接続の追加] をクリックします。
ユーザーフレンドリーな接続名を入力します。
「接続タイプ」に「Hive metastore」を、「メタストア・タイプ」に「内部」を選択します。
(オプション)コメントを追加します。
作成をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
CREATE CONNECTION IF NOT EXISTS <connection-name> TYPE hive_metastore
OPTIONS (builtin true);
ステップ 2: 内部レガシ リージョン内のデータ用の外部ロケーションを作成する Hive metastore
この手順では、 Unity Catalog で外部ロケーションを設定して、従来の内部 Hive metastoreに登録されたデータを保持するクラウド ストレージ ロケーションへのアクセスを制御します。
外部ロケーション は、Unity Catalog ストレージ資格情報 をクラウド ストレージ コンテナー パスに関連付ける セキュリティ保護可能なオブジェクトです。外部ロケーションとストレージの認証情報を参照してください。
要件
クラウド ストレージとDatabricksのアクセス許可の要件については、「クラウド ストレージを Databricksに接続するための外部ロケーションを作成する」の「始める前に」を参照してください。
ワークスペースのレガシー DBFSルートの外部ロケーションを作成する場合は、「DBFSルート内のデータの外部ロケーションを作成する」の「始める前に」を参照してください。
外部ロケーションを作成するためのオプション
Databricks Unity Catalogで外部ロケーションを作成するために推奨されるプロセスは、状況によって異なります。
Unity CatalogAWSでストレージ認証情報を作成していない場合は、IAM ロールとストレージ認証情報を作成する CloudFormation テンプレートを使用して外部ロケーションを作成できます。「AWS CloudFormation テンプレートを使用して S3 バケットの外部ロケーションを作成する」の手順に従います。
Unity Catalogで作成したストレージ認証情報がすでにある場合は、外部ロケーションを手動で作成します。「カタログ エクスプローラーを使用して外部ロケーションを手動で作成する」または「SQL を使用して外部ロケーションを作成する」の手順に従います。
DBFSマウント DatabricksHive metastoreまたはDBFS ルート にデータを格納する内部 をフェデレーションする場合は、外部ロケーションを手動で作成し、[ Copy fromDBFS mount] オプションを使用します。これは、適用可能なストレージ資格情報が存在するかどうかには関係ありません。 「カタログ エクスプローラーを使用して外部ロケーションを手動で作成する」または「DBFSルート内のデータ用の外部ロケーションを作成する」の手順に従います。
外部ロケーションでフォールバックモードを有効にする
で外部ロケーションを作成するとすぐに、その外部ロケーションで表されるパスへのアクセスは、Unity Catalog Unity CatalogUnity Catalog対応コンピュート ( シングル ユーザー、共有、またはSQL ウェアハウス) でクエリを実行するときに、 アクセス許可によって適用されます。これにより、パスにアクセスするための適切な Unity Catalog アクセス許可を持たない既存のワークロードが中断される可能性があります。
外部ロケーションがフォールバックモードの場合、システムはまず、そのロケーションに対するクエリプリンシパルの Unity Catalog アクセス許可を確認し、それが成功しない場合は、インスタンスプロファイルや Apache Spark 設定プロパティなど、既存のクラスタリングまたはノートブックスコープの認証情報を使用してフォールバックし、既存のワークロードが中断なく実行し続けるようにします。
フォールバックモードは、レガシーワークロードの移行中に便利です。 Unity Catalogアクセス許可を使用して正常に実行するようにワークロードを更新したら、フォールバック モードを無効にして、従来のクラスタリング スコープの資格情報がUnity Catalog データ ガバナンスのバイパスに使用されないようにする必要があります。
フォールバック モードは、Catalog Explorer または Unity Catalog 外部ロケーション REST APIを使用して有効にできます。
必要な権限: 外部ロケーションの所有者。
Databricks ワークスペースで、[ カタログ] をクリックします。
クイック アクセス ページで、外部データ データ (>) をクリックします。
更新する外部ロケーションを選択します。
[フォールバック モード] トグルをオンにし、[有効にする] をクリックして確定します。
次の curl の例は、外部ロケーションを作成するとき、および既存の外部ロケーションを更新するときにフォールバック モードを有効にする方法を示しています。
新しい外部ロケーションの作成:
curl -X POST -H 'Authorization: Bearer <token>' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations \
--data
'{
"name": "fallback_mode_enabled_external_location",
"url": "s3://external_location_bucket/url",
"credential_name": "external_location_credential",
"fallback": true
"skip_validation": true
}'
外部ロケーションの更新:
curl -X PATCH \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
https://<workspace-URL>/api/2.1/unity-catalog/external-locations/<external-location-name> \
--data
'{
"comment": "fallback mode enabled",
"fallback": true
}'
ステップ 3: フェデレーションカタログを作成する
このステップでは、ステップ 1 で作成した接続を使用して、ステップ 2 で作成した外部ロケーションを指すフェデレーテッド・カタログを Unity Catalog に作成します。フェデレーテッド・カタログは フォーリンカタログの一種で、外部データ・システム内のデータベースまたはカタログをミラーリングする Unity Catalog 内のセキュリティ保護可能なオブジェクトであり、 Databricks ワークスペース内のそのデータに対してクエリを実行し、アクセスを Unity Catalogで管理できます。 この場合、ミラーリングされたカタログは、 Hive metastoreに登録されているデータです。
ユーザーまたはワークフローがフェデレーションカタログと対話するたびに、メタデータは Hive metastoreから同期されます。
要件
権限要件:
フォーリンカタログを作成するには:
Unity Catalog メタストアに対する
CREATE CATALOG
特権。接続の所有権または接続に対する
CREATE FOREIGN CATALOG
権限。フォーリンカタログの許可パスを入力するには、それらのパスをカバーする外部ロケーションに対する
CREATE FOREIGN SECURABLE
権限が必要です。 外部ロケーションの所有者は、デフォルトによってこの特権を持っています。
フォーリンカタログを操作するには:
カタログの所有権
USE CATALOG
コンピュートの要件:
Catalog Explorerを使用してカタログを作成するには、コンピュートは必要ありません。
SQL を使用してカタログを作成するには: Databricks Runtime 13.3 LTS 以降。
カタログを操作するには: Databricks Runtime 13.3 LTS、 14.3 LTS、 15.1 以降での共有クラスタリング。
フォーリンカタログの作成
フォーリンカタログを作成するには、カタログ エクスプローラー、または Databricks ノートブックまたは SQL クエリ エディターのCREATE FOREIGN CATALOG
SQL コマンドを使用できます。
注:
Unity Catalog API を使用することもできます。 Databricks REST API リファレンスの 「カタログの作成 」を参照してください。
Databricks ワークスペースで、[カタログ]をクリックしてカタログエクスプローラーを開きます。
クイックアクセスページで、「データボタンを追加」をクリックし、「カタログを追加」を選択します。
カタログ名を入力し、カタログの [タイプ] で [外部] を選択します。
ステップ 1 で作成した 接続 をドロップダウンから選択します。
[認証済みパス] フィールドに、ステップ 2 で外部ロケーションとして定義したクラウドストレージロケーションへのパスを入力します。たとえば、
s3://demo,s3://depts/finance
.許可されたパスは、フェデレーテッド・カタログ専用のセキュリティ・レイヤーです。 「許可されたパスとは」を参照してください。
作成をクリックします。
(オプション) [構成 ] をクリックして、カタログに対するアクセス許可の付与とタグの追加を順を追って説明するウィザードを開きます。 これらの手順は、後で実行することもできます。
「Unity Catalog での特権の管理」と「Unity Catalog のセキュリティ保護可能なオブジェクトへのタグの適用」を参照してください。
(オプション)カタログを特定のワークスペースにバインドします。
デフォルトにより、カタログは、 Unity Catalog メタストアにアタッチされた任意のワークスペースからアクセスできます(ユーザー権限によって制限されます)。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動してワークスペースを割り当てます。 「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
フェデレーテッド・カタログに Hive metastore メタデータを取り込みます。
ユーザーまたはワークフローがフェデレーションカタログと対話するたびに、メタデータは Hive metastoreから同期されます。 最初のインタラクションでは、Unity Catalog にカタログが入力され、その内容が Catalog Explorer UI に表示されます。 カタログにデータを取り込むには、Catalog Explorer で サポートされているコンピュート リソース を選択して開始します。 カタログの所有者 (カタログの作成により所有者になります) または
USE CATALOG
権限を持つユーザーである必要があります。ノートブックまたはSQLクエリーエディタで次のSQLコマンドを実行します。括弧内の項目はオプションです。プレースホルダーの値を置き換えます。
<catalog-name>
:Databricksのカタログの名前。<connection-name>
: ステップ 1 で作成した接続オブジェクトの名前。<path1>,<path2>
: ステップ 2 で外部ロケーションとして定義したクラウドストレージロケーションへのパス。たとえば、s3://demo,s3://depts/finance
. 許可されたパスは、フェデレーテッド・カタログ専用のセキュリティ・レイヤーです。 「許可されたパスとは」を参照してください。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name> OPTIONS (authorized_paths '<path1>,<path2>');
ユーザーまたはワークフローがフェデレーションカタログと対話するたびに、メタデータは Hive metastoreから同期されます。
フォーリンカタログの管理と操作も参照してください。