Dataproc ドライバノード グループ

概要

Dataproc NodeGroup リソースは、割り当てられたロールを実行する Dataproc クラスタノードのグループです。このページでは、ドライバ ノードグループについて説明します。これは、Dataproc クラスタでジョブドライバを実行するために Driver ロールが割り当てられた Compute Engine VM のグループです。

ドライバ ノードグループを使用するタイミング

  • ドライバ ノードグループは、共有クラスタで多数の同時実行ジョブを実行する必要がある場合にのみ使用します。
  • ドライバノード グループの制限を避けるため、ドライバノード グループを使用する前にマスターノード リソースを増やします。

ドライバのノードが同時実行ジョブの実行にどのように役立つか

Dataproc は、ジョブごとに Dataproc クラスタ マスターノードでジョブドライバ プロセスを開始します。ドライバ プロセスは、spark-submit などのアプリケーション ドライバを子プロセスとして実行します。ただし、マスターで実行される同時実行ジョブの数は、マスターノードで利用可能なリソースによって制限されます。また、Dataproc マスターノードはスケーリングできないため、マスターノード リソースがジョブの実行に不十分だと、ジョブは失敗するか、スロットルされます。

ドライバノード グループは、YARN によって管理される特別なノードグループであるため、ジョブの同時実行がマスターノード リソースによって制限されることはありません。ドライバ ノードグループがあるクラスタでは、アプリケーション ドライバがドライバノードで実行されます。ノードに十分なリソースがある場合、各ドライバノードは複数のアプリケーション ドライバを実行できます。

利点

ドライバ ノードグループで Dataproc クラスタを使用すると、次のことが可能になります。

  • ジョブドライバ リソースを水平方向にスケーリングして、より多くの同時実行ジョブを実行する
  • ワーカー リソースとは別にドライバ リソースをスケーリングする
  • Dataproc 2.0 以降のイメージ クラスタでスケールダウンを高速化する。これらのクラスタでは、アプリマスターはドライバ ノードグループの Spark ドライバ内で実行されます(デフォルトでは spark.yarn.unmanagedAM.enabledtrue に設定されています)。
  • ドライバノードの起動をカスタマイズします。初期化スクリプト{ROLE} == 'Driver' を追加すると、ノードの選択でドライバ ノードグループに対するアクションをスクリプトで実行できるようになります。

制限事項

  • ノードグループは、Dataproc ワークフロー テンプレートではサポートされていません。
  • ノードグループ クラスタの停止、再起動、自動スケーリングを行うことはできません。
  • MapReduce アプリマスターは、ワーカーノード上で動作します。正常なデコミッションを有効にすると、ワーカーノードのスケールダウンが遅くなる可能性があります。
  • ジョブの同時実行は dataproc:agent.process.threads.job.max クラスタ プロパティの影響を受けます。たとえば、3 つのマスターがあり、このプロパティがデフォルト値の 100 に設定されている場合、クラスタレベルでのジョブの最大同時実行数は 300 になります。

ドライバ ノードグループと Spark クラスタモードの比較

特徴 Spark クラスタモード ドライバ ノードグループ
ワーカーノードのスケールダウン 有効期間が長いドライバは有効期間が短いコンテナと同じワーカーノードで実行されるため、正常なデコミッションによるワーカーのスケールダウンが遅くなります。 ドライバをノードグループで実行すると、ワーカーノードはより迅速にスケールダウンされます。
ストリーミングされたドライバ出力 YARN ログで検索して、ドライバがスケジュールされたノードを見つける必要があります。 ドライバ出力は Cloud Storage にストリーミングされ、Google Cloud コンソールや、ジョブの完了後の gcloud dataproc jobs wait コマンド出力で確認できます。

ドライバ ノードグループの IAM 権限

次の IAM 権限は、次の Dataproc ノードグループに関連するアクションに関連付けられています。

権限 アクション
dataproc.nodeGroups.create Dataproc ノードグループを作成します。プロジェクトに dataproc.clusters.create を持つユーザーには、この権限が付与されます。
dataproc.nodeGroups.get Dataproc ノードグループの詳細を取得します。
dataproc.nodeGroups.update Dataproc ノードグループのサイズを変更します。

ドライバ ノードグループのオペレーション

gcloud CLI と Dataproc API を使用して、Dataproc ドライバ ノードグループを作成、取得、サイズ変更、削除、ジョブ送信できます。

ドライバ ノードグループ クラスタを作成する

ドライバ ノードグループは 1 つの Dataproc クラスタに関連付けられます。ノードグループは、Dataproc クラスタの作成の一環として作成します。gcloud CLI または Dataproc REST API を使用して、ドライバ ノードグループを持つ Dataproc クラスタを作成できます。

gcloud

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --driver-pool-size=SIZE \
    --driver-pool-id=NODE_GROUP_ID

必須フラグ:

  • CLUSTER_NAME: クラスタ名。プロジェクト内で一意にする必要があります。 名前は先頭を小文字にして、51 文字以下の小文字、数字、ハイフンを使用できます。末尾をハイフンにすることはできません。削除されたクラスタの名前は再使用できます。
  • REGION: クラスタが配置されるリージョン
  • SIZE: ノードプール内のノード数。必要なノード数は、ジョブ負荷とドライバプールのマシンタイプによって異なります。ドライバ グループ ノードの最小数は、ジョブドライバが必要とするメモリまたは vCPU の合計数を各ドライバプールのマシンのメモリまたは vCPU で割った値です。
  • NODE_GROUP_ID: 省略可、推奨。この ID はクラスタ内で一意である必要があります。ノードグループのサイズ変更など、今後のオペレーションでドライバ ID を識別するために使用します。指定しない場合、Dataproc はノードグループ ID を生成します。

推奨フラグ:

  • --enable-component-gateway: このフラグを追加して、YARN ウェブ インターフェースへのアクセスを提供する Dataproc コンポーネント ゲートウェイを有効にします。YARN UI の [アプリケーション] と [スケジューラ] ページには、クラスタとジョブのステータス、アプリケーション キューのメモリ、コア容量、その他の指標が表示されます。

追加フラグ: 次のオプションの driver-pool フラグを gcloud dataproc clusters create コマンドに追加して、ノードグループをカスタマイズできます。

フラグ デフォルト値
--driver-pool-id フラグで設定されていない場合はサービスによって生成される文字列識別子。ノードグループのサイズ変更など、今後ノードプール オペレーションを実行するときに、この ID を使用してノードグループを識別できます。
--driver-pool-machine-type n1-standard-4
--driver-pool-accelerator デフォルトはありません。アクセラレータを指定する場合、GPU タイプは必須です。GPU の数は省略可能です。
--num-driver-pool-local-ssds デフォルトはありません
--driver-pool-local-ssd-interface デフォルトはありません
--driver-pool-boot-disk-type pd-standard
--driver-pool-boot-disk-size 1000 GB
--driver-pool-min-cpu-platform AUTOMATIC

REST

Dataproc API の cluster.create リクエストの一環として AuxiliaryNodeGroup を作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 必須。Google Cloud プロジェクト ID。
  • REGION: 必須。Dataproc クラスタのリージョン
  • CLUSTER_NAME: 必須。クラスタ名。プロジェクト内で一意にする必要があります。 名前は先頭を小文字にして、51 文字以下の小文字、数字、ハイフンを使用できます。末尾をハイフンにすることはできません。削除されたクラスタの名前は再使用できます。
  • SIZE: 必須。ノードプール内のノード数。
  • NODE_GROUP_ID: 省略可、推奨。この ID はクラスタ内で一意である必要があります。ノードグループのサイズ変更など、今後のオペレーションでドライバ ID を識別するために使用します。指定しない場合、Dataproc はノードグループ ID を生成します。

その他のオプション: NodeGroup をご覧ください。

HTTP メソッドと URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

リクエストの本文(JSON):

{
  "clusterName":"CLUSTER_NAME",
  "config": {
    "softwareConfig": {
      "imageVersion":""
    },
    "endpointConfig": {
      "enableHttpPortAccess": true
    },
    "auxiliaryNodeGroups": [{
        "nodeGroup":{
            "roles":["DRIVER"],
            "nodeGroupConfig": {
                "numInstances": SIZE
             }
         },
        "nodeGroupId": "NODE_GROUP_ID"
    }]
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    ...
    "auxiliaryNodeGroups": [
      {
        "nodeGroup": {
"name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
          "roles": [
            "DRIVER"
          ],
          "nodeGroupConfig": {
            "numInstances": SIZE,
            "instanceNames": [
              "CLUSTER_NAME-np-q1gp",
              "CLUSTER_NAME-np-xfc0"
            ],
            "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
            "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
            "diskConfig": {
              "bootDiskSizeGb": 1000,
              "bootDiskType": "pd-standard"
            },
            "managedGroupConfig": {
              "instanceTemplateName": "dataproc-2a8224d2-...",
              "instanceGroupManagerName": "dataproc-2a8224d2-..."
            },
            "minCpuPlatform": "AUTOMATIC",
            "preemptibility": "NON_PREEMPTIBLE"
          }
        },
        "nodeGroupId": "NODE_GROUP_ID"
      }
    ]
  },
}

ドライバ ノードグループ クラスタのメタデータを取得する

gcloud dataproc node-groups describe コマンドまたは Dataproc API を使用して、ドライバ ノードグループのメタデータを取得できます。

gcloud

gcloud dataproc node-groups describe NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION

必須フラグ:

  • NODE_GROUP_ID: gcloud dataproc clusters describe CLUSTER_NAME を実行して、ノードグループ ID を一覧表示できます。
  • CLUSTER_NAME: クラスタ名
  • REGION: クラスタ リージョン。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 必須。Google Cloud プロジェクト ID。
  • REGION: 必須。クラスタのリージョン。
  • CLUSTER_NAME: 必須。クラスタ名。
  • NODE_GROUP_ID: 必須。gcloud dataproc clusters describe CLUSTER_NAME を実行して、ノード グループ ID を一覧表示できます。

HTTP メソッドと URL:

GET https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAMEnodeGroups/Node_GROUP_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/NODE_GROUP_ID",
  "roles": [
    "DRIVER"
  ],
  "nodeGroupConfig": {
    "numInstances": 5,
    "imageUri": "https://www.googleapis.com/compute/v1/projects/cloud-dataproc-ci/global/images/dataproc-2-0-deb10-...-rc01",
    "machineTypeUri": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/REGION-a/machineTypes/n1-standard-4",
    "diskConfig": {
      "bootDiskSizeGb": 1000,
      "bootDiskType": "pd-standard"
    },
    "managedGroupConfig": {
      "instanceTemplateName": "dataproc-driver-pool-mcia3j656h2fy",
      "instanceGroupManagerName": "dataproc-driver-pool-mcia3j656h2fy"
    },
    "minCpuPlatform": "AUTOMATIC",
    "preemptibility": "NON_PREEMPTIBLE"
  }
}

ドライバ ノードグループのサイズを変更する

gcloud dataproc node-groupssizing コマンドまたは Dataproc API を使用して、クラスタ ドライバ ノードグループからドライバノードを追加または削除できます。

gcloud

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=SIZE

必須フラグ:

  • NODE_GROUP_ID: gcloud dataproc clusters describe CLUSTER_NAME を実行して、ノードグループ ID を一覧表示できます。
  • CLUSTER_NAME: クラスタ名
  • REGION: クラスタ リージョン。
  • SIZE: ノードグループ内の新しいドライバノード数を指定します。

オプション フラグ:

  • --graceful-decommission-timeout=TIMEOUT_DURATION: ノードグループをスケールダウンする際に、このフラグを追加することで、正常なデコミッション TIMEOUT_DURATION を指定して、ジョブドライバの即時終了を回避できます。推奨: ノードグループで実行されている最長ジョブと同等以上のタイムアウト時間を設定します(失敗したドライバの復元はサポートされていません)。

例: gcloud CLI NodeGroup スケールアップ コマンド:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=4

例: gcloud CLI NodeGroup スケールダウン コマンド:

gcloud dataproc node-groups resize NODE_GROUP_ID \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --size=1 \
    --graceful-decommission-timeout="100s"

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 必須。Google Cloud プロジェクト ID。
  • REGION: 必須。クラスタのリージョン。
  • NODE_GROUP_ID: 必須。gcloud dataproc clusters describe CLUSTER_NAME を実行して、ノード グループ ID を一覧表示できます。
  • SIZE: 必須。ノードプール内のノード数。
  • TIMEOUT_DURATION: 省略可。ノードグループをスケールダウンする際に、gracefulDecommissionTimeout をリクエストの本文に追加することで、ジョブドライバの即時終了を回避できます。推奨: ノードグループで実行されている最長ジョブと同等以上のタイムアウト時間を設定します(失敗したドライバの復元はサポートされていません)。

    例:

    { "size": SIZE,
      "gracefulDecommissionTimeout": "TIMEOUT_DURATION"
    }
       

HTTP メソッドと URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters/CLUSTER_NAME/nodeGroups/Node_GROUP_ID:resize

リクエストの本文(JSON):

{
  "size": SIZE,
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.dataproc.v1.NodeGroupOperationMetadata",
    "nodeGroupId": "NODE_GROUP_ID",
    "clusterUuid": "CLUSTER_UUID",
    "status": {
      "state": "PENDING",
      "innerState": "PENDING",
      "stateStartTime": "2022-12-01T23:34:53.064308Z"
    },
    "operationType": "RESIZE",
    "description": "Scale "up or "down" a GCE node pool to SIZE nodes."
  }
}

ドライバ ノードグループ クラスタを削除する

Dataproc クラスタを削除すると、クラスタに関連付けられているノードグループが削除されます。

ジョブの送信

gcloud dataproc jobs submit コマンドまたは Dataproc API を使用して、ドライバ ノードグループを持つクラスタにジョブを送信できます。

gcloud

gcloud dataproc jobs submit JOB_COMMAND \
    --cluster=CLUSTER_NAME \
    --region=REGION \
    --driver-required-memory-mb=DRIVER_MEMORY \
    --driver-required-vcores=DRIVER_VCORES \
    DATAPROC_FLAGS \
    -- JOB_ARGS

必須フラグ:

  • JOB_COMMAND: ジョブコマンドを指定します。
  • CLUSTER_NAME: クラスタ名
  • DRIVER_MEMORY: ジョブの実行に必要なジョブドライバのメモリ量(MB)。(Yarn メモリ制御をご覧ください)。
  • DRIVER_VCORES: ジョブの実行に必要な vCPU の数。

追加フラグ:

  • DATAPROC_FLAGS: ジョブタイプに関連する追加の gcloud dataproc jobs submit フラグを追加します。
  • JOB_ARGS: ジョブに渡す -- の後に引数 ( を追加します。

例: Dataproc ドライバ ノードグループ クラスタの SSH ターミナル セッションから次の例を実行できます。

  • pi の値を見積もる Spark ジョブ:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 1000
    
  • Spark wordcount ジョブ:

    gcloud dataproc jobs submit spark \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --class=org.apache.spark.examples.JavaWordCount \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        -- 'gs://apache-beam-samples/shakespeare/macbeth.txt'
    
  • pi の値を見積もる PySpark ジョブ:

    gcloud dataproc jobs submit pyspark \
        file:///usr/lib/spark/examples/src/main/python/pi.py \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        -- 1000
    
  • Hadoop TeraGen MapReduce ジョブ:

    gcloud dataproc jobs submit hadoop \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --driver-required-memory-mb=2048 \
        --driver-required-vcores=2 \
        --jar file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
        -- teragen 1000 \
        hdfs:///gen1/test
    

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 必須。Google Cloud プロジェクト ID。
  • REGION: 必須。Dataproc クラスタのリージョン
  • CLUSTER_NAME: 必須。クラスタ名。プロジェクト内で一意にする必要があります。 名前は先頭を小文字にして、51 文字以下の小文字、数字、ハイフンを使用できます。末尾をハイフンにすることはできません。削除されたクラスタの名前は再使用できます。
  • DRIVER_MEMORY: 必須。ジョブの実行に必要なジョブドライバのメモリ量(MB 単位)(Yarn メモリ制御を参照)。
  • DRIVER_VCORES: 必須。ジョブの実行に必要な vCPU の数。
追加のフィールド: ジョブタイプとジョブの引数に関連するフィールドを追加します(サンプル リクエストには、pi の値を見積もる Spark ジョブを送信するために必要なフィールドが含まれています)。

HTTP メソッドと URL:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/jobs:submit

リクエストの本文(JSON):

{
  "job": {
    "placement": {
    "clusterName": "CLUSTER_NAME",
    },
    "driverSchedulingConfig": {
      "memoryMb]": DRIVER_MEMORY,
      "vcores": DRIVER_VCORES
    },
    "sparkJob": {
      "jarFileUris": "file:///usr/lib/spark/examples/jars/spark-examples.jar",
      "args": [
        "10000"
      ],
      "mainClass": "org.apache.spark.examples.SparkPi"
    }
  }
}


リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "reference": {
    "projectId": "PROJECT_ID",
    "jobId": "job-id"
  },
  "placement": {
    "clusterName": "CLUSTER_NAME",
    "clusterUuid": "cluster-Uuid"
  },
  "sparkJob": {
    "mainClass": "org.apache.spark.examples.SparkPi",
    "args": [
      "1000"
    ],
    "jarFileUris": [
      "file:///usr/lib/spark/examples/jars/spark-examples.jar"
    ]
  },
  "status": {
    "state": "PENDING",
    "stateStartTime": "start-time"
  },
  "jobUuid": "job-Uuid"
}

ジョブのログを表示

ジョブ ステータスを表示し、ジョブの問題をデバッグするために、gcloud CLI または Google Cloud コンソールを使用してドライバのログを表示できます。

gcloud

ジョブドライバのログは、ジョブの実行中に gcloud CLI 出力または Google Cloud コンソールにストリーミングされます。ドライバログは、Cloud Storage の Dataproc クラスタのステージング バケットに保持されます。

次の gcloud CLI コマンドを実行して、Cloud Storage のドライバログの場所を一覧表示します。

gcloud dataproc jobs describe JOB_ID \
    --region=REGION
   

ドライバログの Cloud Storage の場所は、次の形式でコマンド出力の driverOutputResourceUri として一覧表示されます。

driverOutputResourceUri: gs://CLUSTER_STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/jobs/JOB_ID

Console

ノード グループ クラスタログを表示するには:

  1. ロギングを有効にします

  2. 次のログ エクスプローラ クエリ形式を使用して、ログを検索できます。

    resource.type="cloud_dataproc_cluster"
    resource.labels.project_id="PROJECT_ID"
    resource.labels.cluster_name="CLUSTER_NAME"
    log_name="projects/PROJECT_ID/logs/LOG_TYPE>"
    
    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクト ID
    • CLUSTER_NAME: クラスタ名
    • LOG_TYPE:
      • Yarn ユーザーのログ: yarn-userlogs
      • YARN Resource Manager のログ: hadoop-yarn-resourcemanager
      • YARN Node Manager のログ: hadoop-yarn-nodemanager

指標をモニタリングする

Dataproc ノードグループのジョブドライバは、dataproc-driverpool パーティション内の dataproc-driverpool-driver-queue 子キューで実行されます。

ドライバ ノードグループの指標

次の表に、ドライバノード グループに対してデフォルトで収集される、関連するノードグループ ドライバの指標の一覧を示します。

ドライバ ノードグループの指標 説明
yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB dataproc-driverpool パーティション内の dataproc-driverpool-driver-queue で使用可能なメモリ量(MiB)。
yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers dataproc-driverpool パーティション内の dataproc-driverpool-driver-queue で保留中の(キューに格納された)コンテナの数。

子キューの指標

次の表に、子キューの指標を示します。指標は、デフォルトでドライバ ノードグループに対して収集され、任意の Dataproc クラスタでの収集に対して有効にできます。

子キューの指標 説明
yarn:ResourceManager:ChildQueueMetrics:AvailableMB デフォルト パーティションの下のこのキューで使用可能なメモリ量(MiB)。
yarn:ResourceManager:ChildQueueMetrics:PendingContainers デフォルト パーティションにある、このキュー内の保留中の(キューに格納された)コンテナの数。
yarn:ResourceManager:ChildQueueMetrics:running_0 すべてのパーティションのこのキュー内でランタイムが 060 分のジョブの数。
yarn:ResourceManager:ChildQueueMetrics:running_60 すべてのパーティションのこのキュー内でランタイムが 60300 分のジョブの数。
yarn:ResourceManager:ChildQueueMetrics:running_300 すべてのパーティションのこのキュー内でランタイムが 3001440 分のジョブの数。
yarn:ResourceManager:ChildQueueMetrics:running_1440 すべてのパーティションのこのキュー内のランタイムが 1440 分を超えるジョブの数。
yarn:ResourceManager:ChildQueueMetrics:AppsSubmitted すべてのパーティションのこのキューに送信されたアプリケーションの数。

Google Cloud コンソールで YARN ChildQueueMetricsDriverPoolsQueueMetrics を表示するには:

  • Metrics Explorer で、[VM インスタンス] → [カスタム] リソースを選択します。

ノードグループ ジョブドライバのデバッグ

このセクションでは、ドライバ ノードグループの条件とエラー、さらには、条件やエラーを修正するための推奨事項を示します。

条件

  • 条件: yarn:ResourceManager:DriverPoolsQueueMetrics:AvailableMB0 に近づいている。これは、クラスタ ドライバプールのキューがメモリ不足になっていることを示します。

    推奨: ドライバプールのサイズをスケールアップします。

  • 条件: yarn:ResourceManager:DriverPoolsQueueMetrics:PendingContainers が 0 より大きい。これは、クラスタ ドライバプールのキューがメモリ不足になり、YARN がジョブをキューイングしている可能性があることを示しています。

    推奨: ドライバプールのサイズをスケールアップします。

エラー

  • エラー: Cluster <var>CLUSTER_NAME</var> requires driver scheduling config to run SPARK job because it contains a node pool with role DRIVER. Positive values are required for all driver scheduling config values.

    推奨: driver-required-memory-mbdriver-required-vcores を正の値に設定します。

  • エラー: Container exited with a non-zero exit code 137

    推奨: ジョブのメモリ使用量に合わせて driver-required-memory-mb を増やします。