このページでは、Apache Spark 用サーバーレスのバッチ ワークロードとインタラクティブ セッションで発生する一般的なネットワーク接続の問題を診断して解決するためのガイダンスを提供します。これらの問題により、ワークロードが必要なデータソース、外部サービス、 Google Cloud API にアクセスできなくなる可能性があります。
一般的な症状とエラー メッセージ
Apache Spark 向け Serverless で接続の問題が発生すると、次のようなエラーが発生することがあります。
Unable to connect to service_name.googleapis.com
Could not reach required Google APIs
Connection refused
Host unreachable
Operation timed out
Permission denied
(API 呼び出しをブロックしている場合はネットワーク関連であることが多い)
Cloud Storage、BigQuery、その他のデータベースのデータへのアクセスに関連するエラーが発生することもあります。
一般的な原因とトラブルシューティングのヒント
このセクションでは、Apache Spark 向け Serverless の接続に関する問題の一般的な原因と、その解決に役立つトラブルシューティングのヒントについて説明します。
ネットワークの構成
ネットワークの構成ミスは、接続障害の頻繁な原因です。Apache Spark 用 Serverless のワークロードとセッションは、内部 IP アドレスを持つ VM で実行されます。ワークロードまたはセッションのサブネットで 限定公開の Google アクセス(PGA)が自動的に有効になり、Google API とサービスにアクセスします。詳細については、Serverless for Apache Spark のネットワーク構成をご覧ください。
アクセス オプション:
Private Service Connect(PSC): VPC ネットワーク内に プライベート エンドポイントを作成して、特定の Google API にアクセスできます。
- Google Cloud コンソールで、[Private Service Connect > エンドポイント] に移動します。エンドポイントを接続するか、
storage.googleapis.com
やdataproc.googleapis.com
などの必要なすべての API のエンドポイントが接続され、バッチ ワークロードまたはセッションの Virtual Private Cloud ネットワークに接続されていることを確認します。
- Google Cloud コンソールで、[Private Service Connect > エンドポイント] に移動します。エンドポイントを接続するか、
Cloud NAT: ワークロードで公共のインターネットにアクセスする必要がある場合は、バッチ ワークロードまたはセッション サブネットに Cloud NAT を構成できます。
- Google Cloud コンソールで、[Cloud NAT] ページに移動します。ゲートウェイを構成するか、バッチ ワークロードまたはセッションの VPC ネットワーク、リージョン、サブネットにゲートウェイが構成されていることを確認します。また、ファイアウォール ルールで
0.0.0.0/0
への下り(外向き)が許可されていることを確認します。詳細については、Cloud NAT を設定するをご覧ください。
- Google Cloud コンソールで、[Cloud NAT] ページに移動します。ゲートウェイを構成するか、バッチ ワークロードまたはセッションの VPC ネットワーク、リージョン、サブネットにゲートウェイが構成されていることを確認します。また、ファイアウォール ルールで
ファイアウォール ルール:
- VPC ネットワーク(または共有 VPC ネットワーク ホスト プロジェクト(該当する場合))の下り(外向き)ファイアウォール ルールで、必要な宛先へのアウトバウンド トラフィックがブロックされないようにする必要があります。
- 該当する場合、下り(外向き)ルールで、 Google Cloudの外部にあるパブリック API やデータベースなどの外部サービスへのトラフィックを許可する必要があります。バッチ ワークロードまたはセッションでインターネット アクセスが必要な場合は、Cloud NAT を使用してサブネットの下り(外向き)を提供できます。
- 接続の問題の一般的な原因ではありませんが、上り(内向き)ルールが厳しすぎると、必要な戻りトラフィックや内部通信が誤ってブロックされる可能性があります。
- VPC ネットワーク(または共有 VPC ネットワーク ホスト プロジェクト(該当する場合))の下り(外向き)ファイアウォール ルールで、必要な宛先へのアウトバウンド トラフィックがブロックされないようにする必要があります。
DNS の解決:
- DNS 解決は VPC ネットワーク内で構成する必要があります。ワークロードとセッションは、
storage.googleapis.com
やbigquery.googleapis.com
などの Google API と外部サービスのホスト名を解決できる必要があります。 - カスタム DNS サーバーと Cloud DNS 限定公開ゾーンは、Google ドメインのクエリを転送または解決する必要があります。
- Google API へのプライベート アクセスに Private Service Connect を使用している場合、Google サービスの DNS レコードは、PSC エンドポイントを使用して VPC ネットワーク内のプライベート IP アドレスに解決される必要があります。
- DNS 解決は VPC ネットワーク内で構成する必要があります。ワークロードとセッションは、
トラブルシューティングのヒント:
ネットワークとサブネットの構成を確認します。
- Apache Spark 用 Serverless のバッチまたはセッションの詳細で、
networkUri
とsubnetUri
を確認します。 - Google Cloud コンソールで、VPC ネットワークとサブネットの設定を確認します。
- Apache Spark 用 Serverless のバッチまたはセッションの詳細で、
プロキシ VM からの接続をテストします。
- バッチまたはセッションのサービス アカウントを使用して、バッチまたはセッションのサブネットでテスト用の Compute Engine VM を起動します。
- テスト VM から、次の接続テストを実行します。
nslookup storage.googleapis.com
を使用して DNS 解決を検証します。bigquery.googleapis.com
やdataproc.googleapis.com
などの他の Google API ドメインをルックアップします。Serverless for Apache Spark サブネットで自動的に有効になるプライベート Google アクセス、または Private Service Connect を使用する場合、ドメインはプライベート IP アドレスに解決される必要があります。curl -v https://storage.googleapis.com
を使用して、Google API への HTTPS 接続を確認します。他の Google サービスへの接続も試します。- バッチまたはセッションで必要な場合は、
ping 8.8.8.8
を使用してインターネット接続をテストします。Cloud NAT が想定される場合は、curl -v https://example.com
を試してください。
- Google Cloud Network Intelligence Center 接続テストを実行して、サブネットから Google API や外部 IP アドレスなどの関連するエンドポイントまでのネットワーク パスを診断します。
Cloud Logging でネットワーク エラーを確認します。
- Apache Spark ワークロードまたはセッションのサーバーレスのロギングを確認します。ネットワーク タイムアウト、接続拒否、API 呼び出しの失敗に関連する
ERROR
またはWARNING
メッセージを探します。Spark 固有のネットワークの問題については、jsonPayload.component="driver"
またはjsonPayload.component="executor"
でフィルタします。
- Apache Spark ワークロードまたはセッションのサーバーレスのロギングを確認します。ネットワーク タイムアウト、接続拒否、API 呼び出しの失敗に関連する
IAM の権限
IAM 権限が不足していると、ワークロードやセッションがリソースにアクセスできなくなり、API 呼び出しが拒否された場合にネットワーク障害が発生する可能性があります。
バッチ ワークロードまたはセッションで使用されるサービス アカウントには、必要なロールが必要です。
- Dataproc ワーカーのロール(
roles/dataproc.worker
)。 - データアクセス ロール(
roles/storage.objectViewer
、roles/bigquery.dataViewer
など)。 - ロギング:(
roles/logging.logWriter
)。
トラブルシューティングのヒント:
- バッチ ワークロードまたはセッションのサービス アカウントを特定します。指定しない場合、デフォルトで Compute Engine のデフォルト サービス アカウントが使用されます。
- Google Cloud コンソールの [IAM と管理] > [IAM] ページに移動し、バッチ ワークロードまたはセッションのサービス アカウントを見つけて、ワークロード オペレーションに必要なロールがあることを確認します。不足しているロールを付与します。
外部サービス構成
ワークロードが Google Cloudの外部にあるデータベースまたはサービスに接続する場合は、構成を確認します。
- 外部サービスのファイアウォールまたはセキュリティ グループで、VPC ネットワークの IP 範囲からのインバウンド接続が許可されていることを確認します。該当する場合は、VPC ピアリング、Cloud VPN、Cloud Interconnect、または Cloud NAT の IP アドレスを使用して内部 IP アドレスを確認します。
- データベースの認証情報または接続文字列を確認します。接続の詳細、ユーザー名、パスワードを確認します。
次のステップ
- Apache Spark 用サーバーレス ネットワーキングについて学習する。
- Apache Spark 用サーバーレス サービス アカウントを確認します。
- 一般的なネットワークのトラブルシューティング ガイドを参照してください。