クラスタ作成エラーのトラブルシューティング

このページには、Dataproc クラスタ作成エラーの診断と修正に役立つ情報が記載されています。

gcpdiag ツールを使用する

gcpdiag は、Google Cloud プロジェクトで問題を特定して修正できるオープンソース ツールです。gcpdiag は、正式にサポートされている Google Cloud プロダクトではありません。詳細については、GitHub で gcpdiag プロジェクトをご確認ください。

gcpdiag ツールは、次のチェックを実行して、Dataproc クラスタ作成に関する次の問題を検出するのに役立ちます。

  • 在庫切れエラー: ログ エクスプローラのログを評価して、リージョンとゾーンでの在庫切れを検出します。
  • 割り当てが不十分: Dataproc クラスタ プロジェクトの割り当てが使用可能かどうかを確認します。
  • 不完全なネットワーク構成: 必要なファイアウォール ルールと、外部および内部 IP の構成の確認など、ネットワーク接続テストを行います。クラスタが削除された場合、gcpdiag ツールはネットワーク接続のチェックを実行できません。
  • プロジェクト間の構成が正しくない: プロジェクト間のサービス アカウントを確認し、追加のロールと組織のポリシーの適用を確認します。
  • 共有 VPC の IAM ロールがない: Dataproc クラスタが共有 VPC ネットワークを使用している場合は、必要なサービス アカウントのロールが追加されているかどうかを確認します。
  • 初期化アクションの失敗: ログ エクスプローラのログを評価して、初期化アクション スクリプトの失敗とタイムアウトを検出します。

gcpdiag クラスタ作成手順の一覧については、考えられる手順をご覧ください。

Cloud Shell

  1. Cloud Shell で次のコマンドをコピーして実行します。
    gcpdiag runbook dataproc/cluster-creation \
      --project=PROJECT_ID \
      --parameter cluster_name=CLUSTER_NAME \
      --parameter OPTIONAL_FLAGS

Google Cloud コンソール

  1. 次のコマンドをコピーします。
  2. gcpdiag runbook dataproc/cluster-creation \
      --project=PROJECT_ID \
      --parameter cluster_name=CLUSTER_NAME \
      --parameter OPTIONAL_FLAGS
  3. Google Cloud コンソールを開き、Cloud Shell をアクティブにします。
  4. Cloud コンソールを開く
  5. コピーしたコマンドを貼り付けます。
  6. gcpdiag コマンドを実行します。これにより、gcpdiag Docker イメージがダウンロードされ、このコマンドに関連するチェックの実行が開始されます。チェックが失敗した場合の対処方法の手順に沿って対応します。

Docker

Docker コンテナで gcpdiag を起動するラッパーを使用して gcpdiag を実行できます。これは、Docker または Podman がインストールされている任意のマシンで動作します。

  1. ローカル ワークステーションに次のコマンドをコピーして実行します。
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. gcpdiag コマンドを実行します。
    ./gcpdiag runbook dataproc/cluster-creation \
      --project=PROJECT_ID \
      --parameter cluster_name=CLUSTER_NAME \
      --parameter OPTIONAL_FLAGS

このランブックで使用可能なパラメータをすべて表示します。

次のように置き換えます。

  • PROJECT_ID: リソースを含むプロジェクトの ID。
    • CLUSTER_NAME: プロジェクト内のターゲット Dataproc クラスタの名前。
    • OPTIONAL FLAGS: クラスタが UI から削除された場合は、追加のパラメータを指定できます。

      • cluster_uuid: プロジェクト内のターゲット Dataproc クラスタの UUID。
      • service_account: リソースの作成に使用される Dataproc クラスタのサービス アカウント。
      • subnetwork: Dataproc クラスタのサブネットワーク URI(フルパス)
      • internal_ip_only: 正/誤
      • cross_project: プロジェクト ID。Dataproc クラスタと同じプロジェクト内にない場合は、サービス アカウントが存在するクロス プロジェクト ID。

有用なフラグ:

  • --project: PROJECT_ID を定義します。
  • --universe-domain: 該当する場合、リソースをホストする信頼できるパートナーのソブリン クラウド ドメインを定義するために使用されます。
  • --parameter または -p: ランブックのパラメータを定義します。

使用可能なフラグの詳細については、gcpdiag使用手順をご覧ください。

クラスタ作成のエラー メッセージを修正する

このセクションでは、Dataproc のエラー メッセージとその一般的な原因、解決策を記載します。

  • オペレーション タイムアウト: 最低 2 つ必要な実行中のデータノード / ノード マネージャーが 0 個です

    原因: マスターノードが、ワーカーノードと通信できないためクラスタを作成できない。

    解決方法:

    • ファイアウォール ルールの警告を確認する。
    • 正しいファイアウォール ルールが設定されていることを確認します。詳細については、デフォルトの Dataproc ファイアウォール ルールの概要をご覧ください。
    • Google Cloud コンソールで接続テストを実行して、マスターノードとワーカーノード間の通信をブロックしているものを特定します
  • projects/{projectId}/regions/{region}/subnetworks/{subnetwork} に対して compute.subnetworks.use 権限が必要

    原因: このエラーは、別のプロジェクトの VPC ネットワークを使用して Dataproc クラスタを設定する際、ネットワークをホストする共有 VPC プロジェクトの Dataproc サービス エージェント サービス アカウントに必要な権限がない場合に発生します。

    解決策: 別のプロジェクトで VPC ネットワークを使用するクラスタを作成するの手順に沿って行います。

  • ゾーン projects/zones/{zone} には、リクエスト (resource type:compute) を満たす十分なリソースがありません

    原因: クラスタの作成に使用されているゾーンに十分なリソースがない。

    解決方法:

  • 割り当て超過エラー

    CPUS/CPUS_ALL_REGIONS の割り当てが不足しています
    「DISKS_TOTAL_GB」の割り当てが不足しています
    「IN_USE_ADDRESSES」の割り当てが不足しています

    原因: CPUディスク、または IP アドレスのリクエストが利用可能な割り当てを超えています。

    解決策: Google Cloud コンソール から追加の割り当てをリクエストします。

  • 初期化アクションの失敗

    原因: インストールがクラスタの作成時に指定された初期化アクションで失敗しました。

    解決方法:

  • ノード {cluster-name}: {component} を初期化できませんでした

    原因: Dataproc コンポーネントを初期化できなかった。

    解決策: 以下をご覧ください。

  • クラスタを作成できませんでした: IP アドレス空間の不足

    原因: リクエストされたクラスタノードをプロビジョニングするために必要な IP アドレス空間を使用できません。

    解決方法:

    • 別のサブネットワークまたはネットワークにクラスタを作成する。
    • ネットワークの使用量を減らして IP アドレス空間を解放します。
    • ネットワーク上で十分な IP 空間が使用可能になるまで待ちます。
  • 初期化スクリプトのエラー メッセージ: リポジトリ REPO_NAME にリリース ファイルがありません

    原因: Debian の旧安定版のバックポート リポジトリが完全に削除された。

    解決方法:

    初期化スクリプトで、apt-get を実行するコードの前に次のコードを追加します。

    oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}');
    stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}');
    
    matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)"
    if [[ -n "$matched_files" ]]; then
      for filename in "$matched_files"; do
        grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \
          sed -i -e 's/^.*-backports.*$//' "$filename"
      done
    fi
    
  • ネットワークにアクセスできません: dataproccontrol-REGION.googleapis.com/...*

    原因: Dataproc クラスタの VPC ネットワークに、必要なインターネットへのルートがない可能性があります。クラスタ VM で実行されている Dataproc エージェントから Dataproc Control API にアクセスしてジョブを取得し、ステータスを報告するには、インターネットへのルートが必要です。インターネットへのシステム生成のデフォルト ルートが削除された可能性があります。

    解決方法:

    --next-hop-gateway=default-internet-gateway を指定して、インターネットへのルートをクラスタ VPC ネットワークに追加します(IPv4 の場合は 0.0.0.0/0IPv6 の場合は ::/0)。アクセス制御用のファイアウォール ルールを追加します。

その他の関連情報