このドキュメントでは、Managed Service for Apache Spark のマルチゾーン クラスタを作成する方法について説明します。マルチゾーン クラスタでは、Managed Service for Apache Spark は、すべてのクラスタノードを 1 つのゾーンに配置するのではなく、クラスタの Compute Engine VM インスタンスをプロビジョニングし、1 つのリージョン内の複数のゾーンに分散します。
大規模なクラスタを作成またはスケーリングする必要があり、単一ゾーンの容量ではリクエストを満たすのに十分でない場合は、マルチゾーン クラスタを使用します。
マルチゾーン クラスタの仕組み
マルチゾーン クラスタを作成すると、Managed Service for Apache Spark は次のようにクラスタノードをプロビジョニングします。
- マスターノード: Managed Service for Apache Spark は、自動ゾーン プレースメントを使用して、クラスタ リージョンの単一ゾーンにマスター インスタンス グループを配置します。
- ワーカーノード: Managed Service for Apache Spark は、プライマリ ワーカー グループとセカンダリ ワーカー グループをリージョン マネージド インスタンス グループ(MIG)として構成します。これらのグループは、容量に余裕があるリージョン内の対象ゾーンにワーカー VM をプロビジョニングして分散します。
Managed Service for Apache Spark はワーカー VM リクエストを複数のゾーンに分散するため、単一ゾーンの容量制約によってリクエストがブロックされる可能性は低くなります。これにより、大規模なクラスタ、Spot VM またはプリエンプティブル セカンダリ ワーカーを使用するクラスタ、需要の高いマシンタイプを使用するクラスタを作成またはスケーリングするときに、ZONE_RESOURCE_POOL_EXHAUSTED エラーを回避できます。
要件と制限事項
マルチゾーン クラスタを作成するには、次のいずれかのイメージ バージョン、または同じイメージ バージョン トラックのそれ以降のバージョンを使用する必要があります。
| 画像モード トラック | サポートされている最小のイメージ バージョン |
|---|---|
| 2.2.x | 2.2.88 |
| 2.3.x | 2.3.37 |
| 3.0.x | 3.0.3 |
マルチゾーン クラスタには次の制限があります。
- 同じクラスタ作成リクエストで、シングルゾーン構成とマルチゾーン構成の両方を指定することはできません。
- 最初のクラスタ作成リクエストで、1,000 を超えるプライマリ ワーカーを含むマルチゾーン クラスタを作成することはできません。ワークロードに 1,000 を超えるプライマリ ワーカーが必要な場合は、1,000 以下のプライマリ ワーカーでクラスタを作成し、作成後にクラスタをスケーリングします。
ネットワーク データ転送の費用
シングルゾーン クラスタでは、すべての VM が同じゾーンにあり、同じゾーン内の VM 間で内部 IP アドレスを使用するネットワーク トラフィックは無料で提供されます。マルチゾーン クラスタでは、マスター VM とワーカー VM を同じリージョン内の異なるゾーンに配置できます。同じリージョン内の異なるゾーンにある VM 間のネットワーク トラフィックには、ゾーン間のデータ転送料金が発生します。
料金の詳細については、 Google Cloud内の VM 間データ転送の料金をご覧ください。
マルチゾーン クラスタを作成
マルチゾーン クラスタは、Google Cloud CLI または Dataproc API を使用して作成できます。
gcloud
マルチゾーン クラスタを作成するには、--multizone フラグを指定して gcloud dataproc clusters create コマンドを実行します。--zone フラグは指定しないでください。
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--multizone \
--image-version=IMAGE_VERSION \
--master-machine-type=MASTER_MACHINE_TYPE \
--worker-machine-type=WORKER_MACHINE_TYPE \
--num-workers=NUM_WORKERS
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前。
- REGION: クラスタの使用可能な Compute Engine リージョン(
us-central1など)。 - IMAGE_VERSION: マルチゾーン クラスタをサポートする画像モード(
2.3.37-debian12など)。詳細については、要件と制限事項をご覧ください。 - MASTER_MACHINE_TYPE: マスターノードの Compute Engine マシンタイプ(
n2-standard-4など)。 - WORKER_MACHINE_TYPE: プライマリ ワーカーノードの Compute Engine マシンタイプ(
n2-standard-4など)。 - NUM_WORKERS: クラスタ内のプライマリ ワーカーの数。この値は
1000以下にしてください。
REST
マルチゾーン クラスタを作成するには、clusters.create リクエストを送信します。リクエストの gceClusterConfig オブジェクトで、zoneUri フィールドを空のままにし、multiZoneConfig.targetShape フィールドを ANY に設定します。
HTTP メソッドと URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters
リクエストの本文(JSON):
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"multiZoneConfig": {
"targetShape": "ANY"
}
},
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"masterConfig": {
"numInstances": 1,
"machineTypeUri": "MASTER_MACHINE_TYPE"
},
"workerConfig": {
"numInstances": NUM_WORKERS,
"machineTypeUri": "WORKER_MACHINE_TYPE"
}
}
}
次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- REGION: クラスタの使用可能な Compute Engine リージョン(
us-central1など)。 - CLUSTER_NAME: クラスタの名前。
- IMAGE_VERSION: マルチゾーン クラスタをサポートする画像モード(
2.3.37-debian12など)。詳細については、要件と制限事項をご覧ください。 - MASTER_MACHINE_TYPE: マスターノードの Compute Engine マシンタイプ(
n2-standard-4など)。 - NUM_WORKERS: クラスタ内のプライマリ ワーカーの数。この値は
1000以下にしてください。 - WORKER_MACHINE_TYPE: プライマリ ワーカーノードの Compute Engine マシンタイプ(
n2-standard-4など)。
次のステップ
- 自動ゾーン プレースメントの詳細を確認する。
- Managed Service for Apache Spark クラスタをスケーリングする方法を学習する。
- リージョン MIG のターゲット分配形態について学習する。