Dataproc Metastore の接続に関するトラブルシューティング

このページでは、Dataproc クラスタまたは Dataproc Serverless ワークロードをマネージド Dataproc Metastore サービスに接続する際の一般的な接続の問題を診断して解決する方法について説明します。

一般的な症状とエラー メッセージ

Dataproc で Dataproc Metastore との接続に関する問題が発生すると、次のようなエラーが表示されることがあります。

  • Unable to connect to Hive Metastore
  • Connection refused
  • Host unreachable
  • javax.jdo.JDOException または類似のデータベース接続エラー
  • データベースまたはテーブルの一覧表示を試みたとき、または Metastore とやり取りする Spark ジョブまたは Hive ジョブを送信したときに、タイムアウト エラーが発生する。

一般的な原因とトラブルシューティングの手順

このセクションでは、Dataproc Metastore の接続に関する問題が発生する一般的な理由と、それぞれのトラブルシューティングの手順について説明します。

1. ネットワーク構成に関する問題

ネットワーク構成の誤りは、Dataproc ワークロードと Dataproc Metastore 間の接続障害の最も一般的な原因です。

  • Virtual Private Cloud ネットワーク ピアリングまたは限定公開サービス アクセス:

    • 通常、Dataproc Metastore インスタンスには、Virtual Private Cloud ネットワーク ピアリング接続(具体的には Private Service Access)を使用してプライベート IP アドレス範囲を使用してアクセスします。
    • ピアリング ステータスを確認する: Dataproc ワークロードの Virtual Private Cloud ネットワークと Dataproc Metastore のサービス プロデューサー ネットワーク間の Virtual Private Cloud ピアリング接続がアクティブで正常であることを確認します。これは、Google Cloud コンソールの [VPC ネットワーク] > [VPC ネットワーク ピアリング] で確認できます。
    • IP 範囲の割り当て: Virtual Private Cloud ネットワークで、プライベート サービス アクセスに十分な IP 範囲が割り当てられていることを確認します。
  • ファイアウォール ルール:

    • Dataproc ワークロードの Virtual Private Cloud ネットワークのファイアウォール ルールで、Dataproc Metastore が使用するポート(デフォルトは 9083)でアウトバウンド トラフィックが許可されていることを確認します。
    • サービス プロデューサー ネットワーク側に、Dataproc ワークロードからのトラフィックをブロックする過度に制限的な上り(内向き)ルールがないことを確認します。
  • DNS 解決:

    • Metastore エンドポイントのホスト名(your-metastore-endpoint.us-central1.dataproc.cloud.google.com)が、Dataproc クラスタまたは Dataproc サーバーレス環境のプライベート IP アドレスに正しく解決される。
    • Cloud DNS 限定公開ゾーンまたは DNS 転送に関する問題が原因で、解決に失敗することがあります。

トラブルシューティングの手順(ネットワーク):

  1. Dataproc Metastore の接続情報を確認する:
    • Google Cloud コンソールで、[Dataproc Metastore] に移動して、インスタンスを選択します。
    • エンドポイント URI と、接続されているネットワークをメモします。
  2. Virtual Private Cloud ピアリングまたは限定公開サービス アクセスを確認する:
    • [VPC ネットワーク] > [VPC ネットワーク ピアリング] に移動します。servicenetworking-googleapis-com へのピアリング接続が ACTIVE であることを確認します。
  3. 接続テストを使用する: Google Cloudの接続テストを使用して、Dataproc ワークロードのサブネット内の Compute Engine VM から Dataproc Metastore エンドポイントの IP アドレスとポートへのネットワーク パスを診断します。
  4. ファイアウォール ログを確認する: ファイアウォール ルールが疑われる場合は、Cloud Firewall ログで拒否された接続を分析します。

2. IAM 権限

Dataproc ワークロードで使用されるサービス アカウントには、Dataproc Metastore にアクセスするための適切な IAM ロールが必要です。

  • 必要なロール: サービス アカウントには、Dataproc Metastore インスタンスまたはプロジェクトに対する Dataproc Metastore ユーザーのロール(roles/datametastore.user)が必要です。
  • サービス エージェントの権限: Dataproc が Metastore に暗黙的にアクセスしている場合は、Dataproc サービス エージェントに十分な権限があることを確認します。

トラブルシューティングの手順(IAM):

  1. サービス アカウントを特定する: Dataproc クラスタまたは Dataproc Serverless バッチで使用されるサービス アカウントを特定します。
  2. IAM ロールを確認する: Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。Dataproc Metastore プロジェクトまたはインスタンスでサービス アカウントに割り当てられているロールを確認します。roles/datametastore.user がない場合は付与します。
  3. サービス アカウントの構成の詳細については、以下をご覧ください。

3. エンドポイントの構成が正しくない

Dataproc ワークロードは、正しい Dataproc Metastore エンドポイント URI で構成する必要があります。

トラブルシューティングの手順(エンドポイント):

  1. エンドポイント URI を確認する: ワークロードの送信で Dataproc Metastore エンドポイントを指定するために使用される hive.metastore.uris Spark プロパティまたはその他の構成を再確認します。Dataproc Metastore インスタンスの詳細のエンドポイント URI と一致していることを確認します。

4. その他の考慮事項

  • Metastore のステータス: Google Cloud コンソールで、Dataproc Metastore インスタンスが HEALTHY 状態であることを確認します。健全でない場合は、まず Metastore の内部問題に対処します。
  • バージョンの互換性: 稀ですが、Dataproc イメージ バージョンと Dataproc Metastore バージョン間に既知の互換性の問題がないことを確認します。
  • SQL Proxy とマネージド サービス: cloud-sql-proxy.sh 初期化アクションを使用して Cloud SQL を Metastore として使用している場合は、Cloud SQL Proxy 初期化アクションの README で特定のトラブルシューティングを参照してください。

次のステップ