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