メインコンテンツまでスキップ

外部Hive metastoreに対してHive metastoreフェデレーションを有効にする

この記事では、組織が Unity Catalogを使用してHive metastoreテーブルを操作できるように、外部Hive metastoreをフェデレーションする方法について説明します。

Hive メタストアフェデレーションの概要については、Hiveメタストアフェデレーション:Hiveメタストアに登録されているテーブルをUnity Catalog で管理できるようにしますをご覧ください。

始める前に

Hive metastore フェデレーションでサポートされているサービスと機能の一覧 (要件と機能のサポート) を確認します。

以下の各ステップの具体的な要件を示します。

ステップ 1: Unity Catalogを外部Hive metastoreに接続する

この手順では、データベース システム (この場合は Hive metastore) にアクセスするためのパスと資格情報を指定する 接続、Unity Catalog セキュリティ保護可能なオブジェクトを作成します。

必要条件

次のものが必要です。

  • Hive metastoreをホストするデータベース・システムへのアクセスを許可するユーザー名とパスワード。
  • データベースへの URL (ホストとポート)。
  • データベース名。
  • Unity Catalog メタストアに対する CREATE CONNECTION 特権。メタストア管理者は、 デフォルト。

接続を作成する

接続を作成するには、カタログエクスプローラーを使用するか、Databricksノートブックまたは Databricks SQLクエリーエディタで CREATE CONNECTION SQLコマンドを使用できます。

注記

Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。

  2. クイック アクセス ページで、 データの追加 > 接続の追加 をクリックします。

  3. 接続のセットアップ ウィザードの [接続の基本 ] ページで、わかりやすい 接続名 を入力します。

  4. 接続タイプHive metastore を選択し、 メタストア・タイプ外部 を選択します。

  5. (オプション)コメントを追加します。

  6. 次へ をクリックします。

  7. [ 認証] ページで、ホスト データベースに次のように入力します。

    • ホスト : たとえば、 mysql-demo.lb123.us-west-2.rds.amazonaws.com
    • ポート : たとえば、 3306
    • ユーザー : たとえば、 mysql_user
    • パスワード : たとえば、 password123
  8. 次へ をクリックします。

  9. [ 接続の詳細] ページで、ホスト データベースに対して以下を選択または入力します。

    • データベース・タイプ : MySQLSQLSERVER または POSTGRESQL を選択します。
    • バージョン : サポートされている Hive metastore バージョンには、0.13、2.3、3.1 があります。
    • データベース : 接続先のデータベースの名前。

    (オプション)データベース・インスタンスが CA 署名付きサーバ証明書を使用しない場合は、 サーバ証明書を信頼する を選択します。

  10. 接続の作成 をクリックします。

  11. カタログの基本 ページで、フォーリンカタログの名前を入力します。

  12. 承認パス で、カタログからアクセスできるクラウドストレージパスを選択します。これらのパスに該当するテーブルのみを、フェデレーテッドカタログを介してクエリできます。パスは外部ロケーションでカバーされている必要があります。 詳細については、承認されたパスとはを参照してください。

  13. アクセス ページで、作成したカタログにユーザーがアクセスできるワークスペースを選択します。 すべてのワークスペースにアクセス権がある を選択するか、 ワークスペースに割り当て をクリックし、ワークスペースを選択して 割り当て をクリックします。

  14. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を追加します。テキスト ボックスにユーザーまたはグループの入力を開始し、返された結果でユーザーまたはグループをクリックします。

  15. カタログに対する 権限 を付与します。

    1. 付与 をクリックします。

    2. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。テキスト ボックスにユーザーまたはグループの入力を開始し、返された結果でユーザーまたはグループをクリックします。

    3. 各ユーザーまたはグループに付与する 権限プリセット を選択します。デフォルトでは、すべてのアカウントユーザーに BROWSE 権限が付与されます。

      • ドロップダウンメニューから「 データリーダー」 を選択して、カタログ内のオブジェクトに対する read 権限を付与します。
      • ドロップダウンメニューから「 データエディタ 」を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。
      • 付与する権限を手動で選択します。
    4. 付与 をクリックします。

  16. 次へ をクリックします。

  17. [ メタデータ ] ページで、必要に応じてタグをキーと値のペアとして指定します。詳細については、「セキュリティ 保護可能なオブジェクト Unity Catalog タグを適用する」を参照してください。

  18. (オプション)コメントを追加します。

  19. 保存 をクリックします。

ステップ 2: 外部ロケーションを作成する Hive metastore内のデータ用

この手順では、外部ロケーションに登録されているデータを保持するクラウド ストレージ ロケーションへのアクセスを制御するために、Unity Catalogで外部ロケーションを設定します。

外部ロケーションは、ストレージ資格情報をクラウドストレージコンテナパスに関連付けるUnity Catalogセキュリティ保護可能なオブジェクトです。

外部ロケーションを作成するためのオプション

DatabricksにおいてUnity Catalogで外部ロケーションを作成するために推奨されるプロセスは、状況によって異なります。

外部ロケーションでフォールバック モードを有効にする

Unity Catalogで外部ロケーションを作成するとすぐに、その外部ロケーションによって表されるパスへのアクセスは、Unity Catalog対応コンピュートでクエリを実行するときにUnity Catalog権限によって強制されます。これにより、パスにアクセスするための適切な Unity Catalog アクセス許可を持たない既存のワークロードが中断される可能性があります。

外部ロケーションがフォールバックモードの場合、システムはまず、そのロケーションに対するクエリプリンシパルの Unity Catalog アクセス許可を確認し、それが成功しない場合は、インスタンスプロファイルや Apache Spark 設定プロパティなど、既存のクラスターまたはノートブックスコープの認証情報を使用してフォールバックし、既存のワークロードが中断なく実行し続けるようにします。

フォールバックモードは、レガシーワークロードの移行中に便利です。Unity Catalogアクセス許可を使用して正常に実行するようにワークロードを更新したら、フォールバック モードを無効にして、従来のクラスター スコープの資格情報がUnity Catalog データ ガバナンスのバイパスに使用されないようにする必要があります。

フォールバック モードは、カタログエクスプローラ または Unity Catalog 外部ロケーション REST APIを使用して有効にできます。

必要な権限 : 外部ロケーションの所有者。

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。
  2. クイック アクセス ページで、 外部データ > をクリックします。
  3. 更新する外部ロケーションを選択します。
  4. フォールバック モード トグルをオンにし、 有効にする をクリックして確定します。

ステップ 3: フォーリンカタログを作成する

注記

カタログエクスプローラ の接続作成ウィザードを使用してステップ 1 を完了した場合は、この手順をすでに完了している可能性があります。ステップ 1 の完了時にフォーリンカタログを作成しなかった場合、または SQL を使用して接続を作成した場合は、このセクションの指示に従う必要があります。

このステップでは、ステップ 1 で作成した接続を使用して、ステップ 2 で作成した外部ロケーションを指すフォーリンカタログを Unity Catalog で作成します。 フォーリンカタログ は、外部データ システム内のデータベースまたはカタログをミラーリングする Unity Catalog 内のセキュリティ保護可能なオブジェクトであり、 Databricks ワークスペース内のそのデータに対してクエリを実行し、アクセスは Unity Catalogによって管理されます。 この場合、ミラーリングされたカタログは、 Hive メタストアに登録されているデータです。

ユーザーまたはワークフローがフォーリンカタログと対話するたびに、メタデータは Hive メタストアから同期されます。

必要条件

権限要件 :

フォーリンカタログを作成するには:

  • Unity Catalog メタストアに対する CREATE CATALOG 特権。
  • 接続の所有権または接続に対する CREATE FOREIGN CATALOG 特権のいずれか。
  • フォーリンカタログに許可されたパスを入力するには、それらのパスをカバーする外部ロケーションに対する CREATE FOREIGN SECURABLE 権限が必要です。 外部ロケーションの所有者は、デフォルトでこの権限を持ちます。

フォーリンカタログを操作するには:

  • カタログの所有権または USE CATALOG

コンピュートの要件 :

  • カタログエクスプローラを使用してカタログを作成するには、コンピュートは必要ありません。
  • 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 リファレンスの カタログの作成 を参照してください。

  1. Databricks ワークスペースで、データアイコン。[カタログ]をクリックして カタログエクスプローラー を開きます。

  2. クイックアクセス ページで、 データを追加 ボタンをクリックし、 カタログを追加 を選択します。

  3. カタログ名 を入力し、カタログの タイプ外部 を選択します。

  4. ステップ 1 で作成した 接続 をドロップダウンから選択します。

  5. 認証済みパス フィールドに、ステップ 2 で外部ロケーションとして定義したクラウドストレージロケーションへのパスを入力します。たとえば、gs://demo, gs://depts/finance

    承認されたパスは、 Hive メタストア フェデレーションによってサポートされるフォーリンカタログのセキュリティの追加レイヤーです。 「許可されたパスとは」を参照してください。

  6. 作成 をクリックします。

  7. (オプション) 構成 をクリックして、カタログに対するアクセス許可の付与とタグの追加を順を追って説明するウィザードを開きます。 これらの手順は、後で実行することもできます。

    Unity Catalog での特権の管理Unity Catalog のセキュリティ保護可能なオブジェクトへのタグの適用を参照してください。

  8. (オプション)カタログを特定のワークスペースにバインドします。

    デフォルトでは、カタログには、 Unity Catalog メタストアに接続されている任意のワークスペースからアクセスできます (ユーザー権限によって制限されます)。 特定のワークスペースからのアクセスのみを許可する場合は、 ワークスペース タブに移動し、ワークスペースを割り当てます。 「 特定のワークスペースへのカタログ アクセスの制限」を参照してください。

  9. フォーリンカタログに Hive メタストア メタデータを入力します。

    ユーザーまたはワークフローがフォーリンカタログと対話するたびに、メタデータは Hive metastoreから同期されます。 最初のインタラクションでは、Unity Catalog にカタログが入力され、その内容が カタログエクスプローラ UI に表示されます。カタログにデータを取り込むには、カタログエクスプローラ で サポートされているコンピュート リソース を選択して開始します。 カタログの所有者 (カタログの作成により所有者になります) または USE CATALOG 権限を持つユーザーである必要があります。