バッチ ワークロードのモニタリングとトラブルシューティング

このドキュメントでは、Serverless for Apache Spark のバッチ ワークロードのモニタリングとトラブルシューティングに使用できるツールとファイルについて説明します。

Google Cloud コンソールからワークロードのトラブルシューティングを行う

バッチジョブが失敗した場合やパフォーマンスが低い場合は、まず Google Cloud コンソールの [バッチ] ページから [バッチの詳細] ページを開くことをおすすめします。

[概要] タブを使用する: トラブルシューティング ハブ

[概要] タブは、[バッチの詳細] ページが開いたときにデフォルトで選択され、バッチの健全性を迅速に初期評価できるように、重要な指標とフィルタされたログが表示されます。この初期評価の後、[バッチの詳細] ページに表示される Spark UIログ エクスプローラGemini Cloud Assist などのより専門的なツールを使用して、より詳細な分析を行うことができます。

バッチ指標のハイライト

[バッチの詳細] ページの [概要] タブには、重要なバッチ ワークロード指標の値を表示するグラフが含まれています。指標グラフは完了後に表示され、リソース競合、データスキュー、メモリ負荷などの潜在的な問題が視覚的に示されます。

バッチ指標ダッシュボード。

指標の表

次の表は、 Google Cloud コンソールの [バッチの詳細] ページに表示される Spark ワークロードの指標の一覧と、指標の値からワークロードのステータスとパフォーマンスに関する分析情報を得る方法について説明します。

指標 確認できるポイント
エグゼキュータ レベルの指標
JVM GC 時間と実行時間の比率 この指標は、エグゼキュータごとの JVM GC(ガベージ コレクション)時間と実行時間の比率を示します。比率が高い場合は、特定のエグゼキュータで実行されているタスク内のメモリリークや、非効率的なデータ構造が原因で、オブジェクトのチャーン率が高くなっている可能性があります。
ディスクにオーバーフローしたバイト数 この指標は、さまざまなエグゼキュータに流出したディスク バイトの合計数を示します。エグゼキュータのディスク バイト数が多すぎる場合は、データスキューが発生している可能性があります。指標が時間の経過とともに増加する場合は、メモリ不足またはメモリリークが発生しているステージがあることを示している可能性があります。
読み取りバイト数と書き込みバイト数 この指標は、エグゼキュータごとの書き込みバイト数と読み取りバイト数を示します。読み取りまたは書き込みバイト数の大きな差異は、レプリケートされた結合によって特定のエグゼキュータでデータ増幅が発生するシナリオを示している可能性があります。
読み取りと書き込みのレコード数 この指標は、エグゼキュータごとの読み取りと書き込みのレコードを示します。読み取られたレコードの数が多く、書き込まれたレコードの数が少ない場合は、特定のエグゼキュータの処理ロジックにボトルネックがあり、待機中にレコードが読み取られている可能性があります。読み取りと書き込みで一貫して遅延が発生するエグゼキュータは、それらのノードでのリソース競合またはエグゼキュータ固有のコードの非効率性を示している可能性があります。
シャッフル書き込み時間と実行時間の比率 この指標は、全体の実行時間に対して、エグゼキュータがシャッフル実行時間に費やした時間を示します。一部のエグゼキュータでこの値が高い場合は、データスキューまたはデータのシリアル化が非効率的であることを示している可能性があります。Spark UI で、シャッフル書き込み時間が長いステージを特定できます。これらのステージで、完了に平均よりも時間がかかっている外れ値タスクを探します。シャッフル書き込み時間の長いエグゼキュータで、ディスク I/O アクティビティも高いかどうかを確認します。シリアル化の効率化とパーティショニングの追加手順が役立つ場合があります。レコードの読み取りと比較してレコードの書き込みが非常に多い場合は、非効率的な結合や誤った変換による意図しないデータの重複を示している可能性があります。
アプリケーション レベルの指標
ステージの進行 この指標は、失敗したステージ、待機中のステージ、実行中のステージの数を示します。失敗したステージや待機中のステージが多数ある場合は、データスキューが発生している可能性があります。データ パーティションを確認し、Spark UI の [ステージ] タブを使用してステージの失敗の原因をデバッグします。
バッチ Spark エグゼキュータ この指標は、必要なエグゼキュータの数と実行中のエグゼキュータの数を示します。必要なエグゼキュータと実行中のエグゼキュータの間に大きな差がある場合は、自動スケーリングの問題を示している可能性があります。
VM レベルの指標
使用されたメモリ この指標は、使用中の VM メモリの割合を示します。マスターの割合が高い場合は、ドライバがメモリ不足になっている可能性があります。他の VM ノードでは、割合が高い場合、エグゼキュータがメモリ不足であることを示している可能性があります。これにより、ディスクの流出が高まり、ワークロード実行時間が遅くなる可能性があります。Spark UI を使用してエグゼキュータを分析し、GC 時間の増加とタスクの失敗の増加を確認します。また、大規模なデータセットのキャッシュ保存と不要な変数のブロードキャストに関する Spark コードをデバッグします。

ジョブのログ

[バッチの詳細] ページには、ジョブ(バッチ ワークロード)ログからフィルタされた警告とエラーが一覧表示される [ジョブログ] セクションがあります。この機能を使用すると、大規模なログファイルを手動で解析することなく、重大な問題を迅速に特定できます。プルダウン メニューからログの [重大度](Error など)を選択し、テキストの [フィルタ] を追加して結果を絞り込むことができます。詳細な分析を行うには、[ログ エクスプローラで表示] アイコンをクリックして、選択したバッチログをログ エクスプローラで開きます。

Cloud Logging でバッチログを表示する
Cloud Logging でバッチログを表示する

例: Google Cloud コンソールの [バッチの詳細] ページの重大度セレクタで Errors を選択すると、ログ エクスプローラが開きます。

バッチ ログ エクスプローラ。

Spark UI

Spark UI は、Apache Spark 用サーバーレス バッチ ワークロードから Apache Spark の実行の詳細を収集します。Spark UI 機能はデフォルトで有効になっており、料金は発生しません。

Spark UI 機能によって収集されたデータは 90 日間保持されます。このウェブ インターフェースを使用すると、永続履歴サーバーを作成しなくても、Spark ワークロードをモニタリングしてデバッグできます。

必要な Identity and Access Management の権限とロール

バッチ ワークロードで Spark UI 機能を使用するには、次の権限が必要です。

  • データ収集権限: dataproc.batches.sparkApplicationWrite。この権限は、バッチ ワークロードを実行するサービス アカウントに付与する必要があります。この権限は Dataproc Worker ロールに含まれています。このロールは、Serverless for Apache Spark がデフォルトで使用する Compute Engine のデフォルト サービス アカウントに自動的に付与されます(Serverless for Apache Spark サービス アカウントをご覧ください)。ただし、バッチ ワークロードにカスタム サービス アカウントを指定する場合は、そのサービス アカウントに dataproc.batches.sparkApplicationWrite 権限を追加する必要があります(通常は、サービス アカウントに Dataproc Worker ロールを付与します)。

  • Spark UI アクセス権限: dataproc.batches.sparkApplicationRead。Google Cloud コンソールの Spark UI にアクセスするには、この権限をユーザーに付与する必要があります。この権限は、Dataproc Viewer ロール、Dataproc Editor ロール、Dataproc Administrator ロールに含まれています。 Google Cloud コンソールで Spark UI を開くには、次のいずれかのロールを付与されているか、この権限を含むカスタムロールが必要です。

Spark UI を開く

Spark UI ページは、 Google Cloud コンソール バッチ ワークロードで使用できます。

  1. [Serverless for Apache Spark インタラクティブ セッション] ページに移動します。

    Dataproc バッチに移動

  2. [バッチ ID] をクリックして、[バッチの詳細] ページを開きます。

  3. 上部のメニューで [View Spark UI] をクリックします。

[View Spark UI] ボタンは、次の場合に無効になります。

  • 必要な権限が付与されていない場合
  • [バッチの詳細] ページの [Spark UI を有効にする] チェックボックスをオフにした場合
  • バッチ ワークロードを送信するときに spark.dataproc.appContext.enabled プロパティを false に設定した場合

Gemini Cloud Assist による AI を活用した調査(プレビュー)

概要

Gemini Cloud Assist の調査プレビュー機能は、Gemini の高度な機能を使用して、Apache Spark 用 Serverless バッチ ワークロードの作成と実行を支援します。この機能は、失敗したワークロードと実行速度の遅いワークロードを分析して根本原因を特定し、修正を推奨します。これにより、レビュー、保存、サポートとの共有が可能な永続的な分析が作成され、コラボレーションが促進され、問題解決が迅速化されます。 Google Cloud

機能

この機能を使用して、 Google Cloud コンソールから調査を作成します。

  • 調査を作成する前に、問題に自然言語のコンテキストの説明を追加します。
  • 失敗したバッチ ワークロードと遅いバッチ ワークロードを分析します。
  • 推奨される修正方法で問題の根本原因を把握します。
  • 調査の完全なコンテキストが添付されたサポートケースを作成します。 Google Cloud

始める前に

調査機能の使用を開始するには、 Google Cloud プロジェクトで Gemini Cloud Assist API を有効にします。

調査を開始する

調査を開始するには、次のいずれかの操作を行います。

  1. オプション 1: Google Cloud コンソールで、バッチリスト ページに移動します。ステータスが Failed のバッチについては、[Gemini による分析情報] 列に [調査] ボタンが表示されます。ボタンをクリックして調査を開始します。

    [調査] ボタンが表示されたバッチのリストページ。
  2. オプション 2: バッチ ワークロードの [バッチの詳細ページ] を開いて調査します。SucceededFailed の両方のバッチ ワークロードで、[概要] タブの [健全性概要] セクションの [Gemini による分析情報] パネルに [調査] ボタンが表示されます。ボタンをクリックして調査を開始します。

    失敗したジョブの [Insights by Gemini] 列に [調査] ボタンが表示されているバッチの詳細ページ。

    調査ボタンのテキストは、調査のステータスを示します。

    • 調査: この batch_details に対して調査は実行されていません。ボタンをクリックして調査を開始します。
    • 調査を表示: 調査が完了しました。ボタンをクリックして結果を表示します。
    • 調査中: 調査が進行中です。

調査結果を解釈する

調査が完了すると、[調査の詳細] ページが開きます。このページには、Gemini の完全な分析結果が記載されています。分析結果は次のセクションに整理されています。

  • 問題: 調査中のバッチ ワークロードの詳細が自動入力された、折りたたみ可能なセクション。
  • 関連する観察結果: ログと指標の分析中に Gemini が検出した重要なデータポイントと異常値を一覧表示する折りたたみ可能なセクション。
  • 仮説: これはメイン セクションで、デフォルトで展開されます。検出された問題の根本原因の候補が一覧表示されます。各仮説には次のものが含まれます。
    • 概要: 考えられる原因の説明(「シャッフル書き込み時間が長く、タスクのスキューの可能性がある」など)。
    • 推奨される修正: 潜在的な問題に対処するための実行可能な手順のリスト。

対処

仮説と推奨事項を確認したら:

  • 提案された修正を 1 つ以上ジョブ構成またはコードに適用し、ジョブを再実行します。

  • パネルの上部にある高評価アイコンまたは低評価アイコンをクリックして、調査の有用性に関するフィードバックを送信します。

調査を確認してエスカレーションする

以前に実行した調査の結果を確認するには、[Cloud Assist の調査] ページで調査名をクリックして、[調査の詳細] ページを開きます。

さらにサポートが必要な場合は、 Google Cloud サポートケースをオープンしてください。このプロセスにより、サポート エンジニアは、Gemini によって生成された観測結果や仮説など、以前に実施された調査の完全なコンテキストを取得できます。このコンテキストの共有により、サポートチームとのやり取りが大幅に減り、ケースの解決が迅速になります。

調査からサポートケースを作成するには:

[調査の詳細] ページで [サポートをリクエスト] をクリックします。

プレビューのステータスと料金

公開プレビュー期間中は、Gemini Cloud Assist の調査は無料です。この機能は、一般提供(GA)された時点で料金が発生します。

一般提供後の料金の詳細については、Gemini Cloud Assist の料金をご覧ください。

Ask Gemini プレビュー版(2025 年 9 月 22 日に提供終了)

Gemini に質問するプレビュー機能では、Gemini に質問するボタンを使用して、 Google Cloud コンソールの [バッチ] ページと [バッチの詳細] ページで分析情報にワンクリックでアクセスできました。この関数は、ワークロードのログと指標に基づいて、エラー、異常、パフォーマンスの改善の可能性の概要を生成しました。

2025 年 9 月 22 日に「Ask Gemini」プレビュー版が廃止された後も、ユーザーは Gemini Cloud Assist の調査機能を使用して、AI を活用したサポートを引き続き利用できます。

重要: トラブルシューティング AI アシスタンスを中断なく利用するには、2025 年 9 月 22 日までに Gemini Cloud Assist の調査を有効にすることを強くおすすめします。

Apache Spark 用サーバーレスのログ

Apache Spark 向けサーバーレスでは、ロギングがデフォルトで有効になっており、ワークロードが完了した後にワークロード ログが保持されます。Apache Spark 向けサーバーレスは、Cloud Logging でワークロード ログを収集します。Apache Spark 向けサーバーレスのログには、ログ エクスプローラの Cloud Dataproc Batch リソースでアクセスできます。

Apache Spark 用サーバーレスのログをクエリする

Google Cloud コンソールのログ エクスプローラには、バッチ ワークロード ログを調べるクエリを作成するためのクエリペインがあります。バッチ ワークロード ログを調べるクエリを作成する手順は次のとおりです。

  1. [ログ エクスプローラ] に移動

  2. 現在のプロジェクトが選択されています。[プロジェクトのスコープを絞り込む] をクリックして、別のプロジェクトを選択できます。
  3. バッチログクエリを定義します。

    • フィルタ メニューを使用して、バッチ ワークロードをフィルタします。

      1. [すべてのリソース] で、[Cloud Dataproc Batch] リソースを選択します。

        1. [リソースの選択] パネルで、バッチの [ロケーション]、[バッチ ID] の順に選択します。これらのバッチ パラメータは、 Google Cloud コンソールの Dataproc の [バッチ] ページに表示されます。

        2. [適用] をクリックします。

        3. [ログ名を選択] で、[ログ名を検索] ボックスに「dataproc.googleapis.com」と入力して、クエリするログタイプを制限します。表示されたログファイル名を 1 つ以上選択します。

    • クエリエディタを使用して、VM 固有のログをフィルタします。

      1. 次の例に示すように、リソースタイプと VM リソース名を指定します。

        resource.type="cloud_dataproc_batch"
        labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
        
        注:

        • BATCH_UUID: バッチ UUID は、 Google Cloud コンソールの [バッチ] ページでバッチ ID をクリックすると表示される [バッチの詳細] ページに表示されます。

        バッチログには、VM リソース名のバッチ UUID も一覧表示されます。バッチ driver.log の例を次に示します。

  4. [クエリを実行] をクリックします。

Apache Spark 向けサーバーレスのログタイプとサンプルクエリ

次のリストに、さまざまな Serverless for Apache Spark ログタイプと、各ログタイプのログ エクスプローラのクエリの例を示します。

  1. dataproc.googleapis.com/output: このログファイルには、バッチ ワークロードの出力内容が含まれています。Apache Spark 向け Serverless は、バッチ出力を output Namespace にストリーミングし、ファイル名を JOB_ID.driver.log に設定します。

    出力ログのログ エクスプローラ クエリの例:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
    

  2. dataproc.googleapis.com/spark: spark Namespace は、Dataproc クラスタのマスター VM とワーカー VM で実行されているデーモンとエグゼキュータの Spark ログを集約します。各ログエントリには、ログソースを識別する masterworker、または executor コンポーネントラベルが含まれています。

    • executor: ユーザーコード エグゼキュータからのログ。通常、これらは分散ログです。
    • master: Spark スタンドアロン リソース マネージャー マスターのログ。Dataproc on Compute Engine YARN ResourceManager ログに似ています。
    • worker: Spark スタンドアロン リソース マネージャー ワーカーのログ。Dataproc on Compute Engine YARN NodeManager ログに似ています。

    spark Namespace 内のすべてのログに対するログ エクスプローラのクエリの例:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    

    spark Namespace の Spark スタンドアロン コンポーネント ログのサンプル ログ エクスプローラ クエリ:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    jsonPayload.component="COMPONENT"
    

  3. dataproc.googleapis.com/startup: startup Namespace には、バッチ(クラスタ)の起動ログが含まれます。初期化スクリプトのログが含まれます。コンポーネントはラベルで識別されます。次に例を示します。

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    指定した VM の起動ログのログ エクスプローラ クエリの例:
    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
    
  4. dataproc.googleapis.com/agent: agent Namespace は、Dataproc エージェント ログを集約します。各ログエントリには、ログソースを識別するファイル名ラベルが含まれています。

    指定したワーカー VM によって生成されたエージェントログのログ エクスプローラ クエリの例:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

  5. dataproc.googleapis.com/autoscaler: autoscaler Namespace は、Serverless for Apache Spark のオートスケーラー ログを集約します。

    指定したワーカー VM によって生成されたエージェントログのログ エクスプローラ クエリの例:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

詳細については、Dataproc ログをご覧ください。

Apache Spark 用サーバーレスの監査ログについては、Dataproc 監査ロギングをご覧ください。

ワークロード指標

Apache Spark 用サーバーレスは、 Google Cloud コンソールの Metrics Explorer または [バッチの詳細] ページで確認できるバッチ指標と Spark 指標を提供します。

バッチ指標

Dataproc batch リソース指標は、バッチ エグゼキュータの数などのバッチ リソースに関する分析情報を提供します。バッチ指標には dataproc.googleapis.com/batch という接頭辞が付いています。

Metrics Explorer でのバッチ指標の例。

Spark 指標

デフォルトでは、Apache Spark 用サーバーレスは、Spark 指標収集プロパティを使用して無効にしない限り、利用可能な Spark 指標の収集を有効にします。または、1 つ以上の Spark 指標のコレクションをオーバーライドできます。

利用可能な Spark 指標には、Spark ドライバとエグゼキュータの指標、システム指標が含まれます。利用可能な Spark 指標には custom.googleapis.com/ という接頭辞が付いています。

Metrics Explorer の Spark 指標の例。

指標アラートを設定する

Dataproc 指標アラートを作成すると、ワークロードの問題の通知を受け取ることができます。

グラフを作成

Google Cloud コンソールの Metrics Explorer を使用して、ワークロード指標を可視化するグラフを作成できます。たとえば、disk:bytes_used を表示するグラフを作成し、batch_id でフィルタできます。

Cloud Monitoring

Monitoring では、ワークロードのメタデータと指標を使用して、Apache Spark ワークロードの健全性とパフォーマンスに関する分析情報を提供します。ワークロード指標には、Spark 指標、バッチ指標、オペレーション指標が含まれます。

Google Cloud コンソールの Cloud Monitoring を使用すると、指標の確認、グラフの追加、ダッシュボードの作成、アラートの作成を行えます。

ダッシュボードの作成

複数のプロジェクトとさまざまな Google Cloud プロダクトの指標を使用して、ワークロードをモニタリングするダッシュボードを作成できます。詳細については、カスタム ダッシュボードの作成と管理をご覧ください。

永続的履歴サーバー

Apache Spark 向けサーバーレスは、ワークロードの実行に必要なコンピューティング リソースを作成し、それらのリソースでワークロードを実行し、ワークロードが終了するとリソースを削除します。ワークロードの指標とイベントは、ワークロードが完了すると保持されません。ただし、永続的履歴サーバー(PHS)を使用すると、ワークロード アプリケーションの履歴(イベントログ)を Cloud Storage に保持できます。

バッチ ワークロードで PHS を使用する手順は次のとおりです。

  1. Dataproc 永続的履歴サーバー(PHS)を作成します

  2. ワークロードを送信するときに、PHS を指定します。

  3. コンポーネント ゲートウェイを使用して PHS に接続し、アプリケーションの詳細、スケジューラ ステージ、タスクレベルの詳細、環境とエグゼキュータの情報を表示します。

自動チューニング

  • Apache Spark 用 Serverless の自動チューニングを有効にする: Google Cloud コンソール、gcloud CLI、Dataproc API を使用して、定期的な各 Spark バッチ ワークロードを送信する場合は、Apache Spark 用 Serverless の自動チューニングを有効にできます。

コンソール

次の手順を実行して、繰り返しの Spark バッチ ワークロードで自動チューニングを有効にします。

  1. Google Cloud コンソールで、Dataproc の [バッチ] ページに移動します。

    Dataproc バッチに移動

  2. バッチ ワークロードを作成するには、[作成] をクリックします。

  3. [コンテナ] セクションで、コホート名を入力します。バッチが一連の反復的なワークロードの 1 つとして識別されます。Gemini 支援の分析は、このコホート名で送信された 2 回目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH-Query1 を指定します。

  4. 必要に応じて [バッチを作成] ページの他のセクションに入力し、[送信] をクリックします。詳細については、バッチ ワークロードを送信するをご覧ください。

gcloud

次の gcloud CLI gcloud dataproc batches submit コマンドをターミナル ウィンドウでローカルに実行するか、Cloud Shell で実行して、繰り返しの Spark バッチ ワークロードで自動チューニングを有効にします。

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    other arguments ...

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

  • COMMAND: Spark ワークロード タイプ(SparkPySparkSpark-SqlSpark-R など)。
  • REGION: ワークロードが実行される リージョンを指定します。
  • COHORT: コホート名。バッチが一連の繰り返しワークロードの 1 つとして識別されます。Gemini 支援の分析は、このコホート名で送信された 2 回目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH Query 1 を指定します。

API

batches.create リクエストに RuntimeConfig.cohort 名を含めて、繰り返しの Spark バッチ ワークロードで自動チューニングを有効にします。自動チューニングは、このコホート名で送信された 2 回目以降のワークロードに適用されます。たとえば、毎日 TPC-H クエリを実行するスケジュール設定されたワークロードのコホート名として TPCH-Query1 を指定します。

例:

...
runtimeConfig:
  cohort: TPCH-Query1
...