Hive metastoreAWSGlue メタストア の フェデレーションを有効にする
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、AWS GlueHive metastore をフェデレーションして、組織がHive metastore を使用してUnity Catalog テーブルを操作できるようにする方法について説明します。
Hive metastoreHive metastoreフェデレーションの概要については、「 フェデレーション:Unity Catalog に登録されたテーブルを管理するための の有効化 」を参照してください。Hive metastore
始める前に
Hive metastore フェデレーションでサポートされているサービスと機能の一覧 (要件、サポートされている機能、制限事項) を確認します。
各ステップの具体的な要件は、以下のとおりです。
ステップ1:Unity CatalogをAWS接着剤Hive metastore に接続します
AWS Glue Hive metastoreを Databricksに接続するには、次のことを行う必要があります。
Glue リソースへの一時的なアクセスを IAMtrust ポリシー 使用して ロールを作成します。DatabricksAWS
で ロールを登録する サービス資格情報 を作成します。IAMUnity Catalogサービス資格情報は、長期的なクラウド資格情報をカプセル化する Unity Catalog のセキュリティ保護可能なオブジェクトです。
から グルー カタログへの Unity Catalog接続 を作成します。AWSDatabricks接続は、データベース システムにアクセスするためのパスと資格情報を指定する Unity Catalog のセキュリティ保護可能なオブジェクトです。
要件
次のものが必要です。
Glue カタログへのアクセスを許可する IAMロールを作成する機能。AWS
AWS Glue カタログを含む AWS アカウントのリージョンとアカウント ID。
Unity Catalog メタストアに対する
CREATE SERVICE CREDENTIAL
とCREATE CONNECTION
の特権。 メタストア管理者は、デフォルトによってこれらの特権を持っています。
IAMロールとサービスの資格情報を作成する
「ステップ 1:IAM ロールを作成する 」の手順を使用して、IAM DatabricksAWSGlue リソースへの一時的なアクセスを許可する ロールを作成します 。この IAMロールは自己仮定である必要があるため、このプロセスには次の 3 つの手順が必要です。
これらの手順に含まれている AWS Glue のサンプル IAM ポリシーを使用する必要があります。 自己引き受けロールの要件については、これらの手順でも説明します。
接続を作成する
接続を作成するには、カタログエクスプローラーを使用するか、Databricksノートブックまたは Databricks SQLクエリーエディタで CREATE CONNECTION
SQLコマンドを使用できます。
注:
Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections を参照してください。 および Unity Catalog コマンド。
Databricks ワークスペースで、[ カタログ] をクリックします。
[クイック アクセス] ページで、[データの追加] > [接続の追加] をクリックします。
ユーザーフレンドリーな接続名を入力します。
「接続タイプ」に「Hive metastore」を、「メタストア・タイプ」に「AWS Glue」を選択します。
ホスト・データベースの次の 接続詳細 を入力します。
AWS リージョン: AWS Glue カタログを保持している AWS アカウントのリージョン。
AWS アカウント ID: AWS アカウントのアカウント ID。
資格情報: 前の手順で作成したサービス資格情報を選択します。
(オプション)コメントを追加します。
(オプション) [詳細オプション ] を展開し、 Hive ウェアハウス ディレクトリへの完全修飾パスを入力します。
これは、デフォルトの場所を使用しない場合にのみ必要です。
作成をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
warehouse_directory
にデフォルトHive ウェアハウス ディレクトリの場所を使用しない場合にのみ、Hive metastore を含めます。
CREATE CONNECTION <connection-name> TYPE glue
OPTIONS (
aws_region '<aws-region-ID>',
aws_account_id '<aws-account-ID>',
credential '<service-credential-ID>',
);
ステップ2:Hive metastore 内のデータ用の外部ロケーションを作成する
この手順では、Unity Catalog AWSGlue に登録されているデータを保持するクラウド ストレージの場所へのアクセスを制御するために、 内の外部ロケーションを構成します。Hive metastore
外部ロケーション は、Unity Catalog ストレージ資格情報 をクラウド ストレージ コンテナー パスに関連付ける セキュリティ保護可能なオブジェクトです。外部ロケーションとストレージの認証情報を参照してください。
要件
クラウド ストレージとDatabricksのアクセス許可の要件については、「クラウド ストレージを Databricksに接続するための外部ロケーションを作成する」の「始める前に」を参照してください。
外部ロケーションを作成するためのオプション
Databricks Unity Catalogで外部ロケーションを作成するために推奨されるプロセスは、状況によって異なります。
Unity CatalogAWSでストレージ認証情報を作成していない場合は、IAM ロールとストレージ認証情報を作成する CloudFormation テンプレートを使用して外部ロケーションを作成できます。「AWS CloudFormation テンプレートを使用して S3 バケットの外部ロケーションを作成する」の手順に従います。
Unity Catalogで作成したストレージ認証情報がすでにある場合は、外部ロケーションを手動で作成します。「カタログ エクスプローラーを使用して外部ロケーションを手動で作成する」または「SQL を使用して外部ロケーションを作成する」の手順に従います。
外部ロケーションでフォールバックモードを有効にする
で外部ロケーションを作成するとすぐに、その外部ロケーションで表されるパスへのアクセスは、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から同期されます。
フォーリンカタログの管理と操作も参照してください。