Dataproc on GKE クラスタをスケーリングする

Dataproc on GKE クラスタをスケールするには、Spark ドライバまたは Spark エグゼキュータのロールに関連付けられたノードプールのオートスケーラー構成を更新します。Dataproc on GKE クラスタを作成するときに、Dataproc on GKE のノードプールとその関連ロールを指定します。

ノードプールの自動スケーリングの設定

GKE 仮想クラスタで Dataproc を作成するときに、GKE ノードプールの Dataproc の自動スケーリングの境界を設定できます。指定しない場合、Dataproc on GKE ノードプールはデフォルト値で自動スケーリングされます(Dataproc on GKE 一般提供リリースで、デフォルトは最小 = 1 と最大 = 10 に設定されていますが、変更される場合があります)。特定のノードプールの自動スケーリングの最小値と最大値を取得するには、GKE 仮想クラスタで Dataproc を作成する際に設定します。

ノードプールの自動スケーリングの更新

GKE ノードプール上の Dataproc の自動スケーリング構成を変更するには、次の GKE gcloud container node-pools update コマンドを使用します。

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=GKE_CLUSTER_NAME \
    --region=region \
    --enable-autoscaling \
    --min-nodes=min nodes (must be <= max-nodes) \
    --max-nodes=max nodes (must be >= min-nodes) \

Spark 自動スケーリングの仕組み

  1. ジョブが送信されると、ドライバ Pod が Spark ドライバの役割に関連付けられたノードプールで実行されるようにスケジュールされます。
  2. ドライバ Pod は GKE スケジューラを呼び出して、エグゼキュータ Pod を作成します。
  3. エグゼキュータ Pod は、Spark エグゼキュータの役割に関連付けられたノードプールでスケジュールされます。
  4. ノードプールに Pod 用の容量があれば、Pod はすぐに実行を開始します。容量が不足している場合、GKE クラスタ オートスケーラーは、リクエストされたリソースを提供できるように、最大でユーザー指定の上限までノードプールをスケールアップします。ノードプールの容量が過剰になると、GKE クラスタ オートスケーラーは、ノードプールをユーザー指定の上限までスケールダウンします。