このドキュメントでは、高可用性(HO)モードで Managed Service for Apache Spark クラスタを作成する方法について説明します。高可用性モードでは、クラスタの作成時に固定のマシンタイプを要求するのではなく、Managed Service for Apache Spark が互換性のあるマシンタイプの範囲から選択できるようにすることで、需要が高い期間やリソースの制約がある期間にクラスタ VM を正常にプロビジョニングできる可能性が高まります。
高可用性モードを使用して、汎用コンピューティング要件を持つクラスタを作成すると、VM の可用性の欠如によるクラスタの作成とスケーリングの失敗を防ぐことができます。
高取得性モードの仕組み
標準のクラスタ作成リクエストでは、クラスタノードに特定のマシンタイプ(n2-standard-4 など)を指定します。特定のマシンタイプがゾーンで使用できない場合、作成リクエストは失敗します。
高可用性モードでは、固定のマシンタイプではなく、マスターノード、プライマリ ワーカーノード、セカンダリ ワーカーノードに柔軟なリソース要件を指定します。
- vCPU コア数: VM インスタンスあたりの vCPU のターゲット数(2、4、8、16、32 コア)をリクエストします。
ハードウェア クラス: パフォーマンスとメモリのプロファイルを指定します。
STANDARD: vCPU あたり約 4 GB のメモリと標準永続ストレージ ティアを備えたバランスの取れた構成を提供します。現在の候補マシンタイプには、n4-standard、n4d-standard、n2-standard、n2d-standard(ランク 0 の優先度)、c4-standard、c4d-standard(ランク 1 の優先度)があります。PERFORMANCE: vCPU あたり約 8 GB のメモリと、より上位のディスク構成(より高い IOPS とスループット)を備えた高パフォーマンス構成を提供します。現在の候補マシンタイプには、n4-highmem、n4d-highmem、n2-highmem、n2d-highmem(ランク 0 の優先度)、c4-highmem、c4d-highmem(ランク 1 の優先度)が含まれます。
インスタンス数: 各グループのインスタンス数を指定します。
- マスター: 1 つのインスタンスである必要があります。
- プライマリ ワーカー: 正の整数。
- セカンダリ ワーカー: 負でない整数。
ブートディスク サイズ: オプションのブートディスク サイズ(100 GB など)。
Managed Service for Apache Spark は、自動ゾーン プレースメントを自動的に使用して、クラスタ リージョン全体のゾーンを評価し、リクエストされたハードウェア クラス内で利用可能な容量を持つ候補マシンタイプを選択します。
要件と制限事項
高可用性モードには、次の要件と制限事項があります。
- リソース割り当て: 選択したハードウェア クラス(
N4、N4D、N2、N2D、C4、C4D)のすべての候補マシン ファミリーに対して、クラスタ リージョンに十分な Compute Engine リソース割り当てが必要です。基盤となる候補マシンタイプは Google によって制御され、いつでも変更される可能性があるため、特定のマシンタイプに依存しないでください。 - ゾーンの指定: 明示的な
--zone(またはzoneUri)を指定することはできません。Managed Service for Apache Spark は、自動ゾーン プレースメントを使用して、リージョン内の使用可能なゾーンを自動的に選択します。 - 固定マシン構成とノード構成の相互排他性:
- マスター、プライマリ ワーカー、セカンダリ ワーカーのノードグループを柔軟な構成(
--master-flexible-config、--worker-flexible-config、--secondary-worker-flexible-config)で構成する場合、これらのノードグループに標準マシンタイプ、インスタンス選択、インスタンス数、ディスク、アクセラレータ フラグを指定することはできません。- マスター:
--master-machine-type、--master-machine-types、--master-instance-selection、--master-instance-flexibility-policy-file、--master-boot-disk-size、--master-boot-disk-type、--num-master-local-ssds、--master-accelerator、--master-min-cpu-platformと組み合わせることはできません。 - プライマリ ワーカー:
--num-workers、--worker-machine-type、--worker-machine-types、--worker-instance-selection、--worker-instance-flexibility-policy-file、--worker-boot-disk-size、--worker-boot-disk-type、--num-worker-local-ssds、--worker-accelerator、--worker-min-cpu-platformと組み合わせることはできません。 - セカンダリ ワーカー:
--num-secondary-workers、--secondary-worker-type、--secondary-worker-machine-types、--secondary-worker-instance-selection、--secondary-worker-instance-flexibility-policy-file、--secondary-worker-boot-disk-size、--secondary-worker-boot-disk-type、--num-secondary-worker-local-ssds、--secondary-worker-acceleratorと組み合わせることはできません。
- マスター:
- マルチノード クラスタで、マスターノード グループで高可用性モードが有効になっている場合、プライマリ ワーカーノード グループでも柔軟な構成(
--worker-flexible-config)を使用する必要があります。 - 高可用性クラスタでセカンダリ ワーカーを使用する場合は、標準のセカンダリ ワーカー フラグではなく
--secondary-worker-flexible-configを使用する必要があります。
- マスター、プライマリ ワーカー、セカンダリ ワーカーのノードグループを柔軟な構成(
- 単一ノードクラスタ: 単一ノードクラスタ(
--single-nodeまたは--cluster-type=single-node)では、--master-flexible-configのみを指定できます。プライマリ ワーカーとセカンダリ ワーカーの柔軟な構成フラグはサポートされていません。 - クラスタの更新:
gcloud dataproc clusters updateを使用して、プライマリ ワーカーとセカンダリ ワーカーのインスタンス数(num-instances)を更新できます。コア数、ハードウェア クラス、ブートディスク サイズは作成時の仕様であり、作成後に変更することはできません。 - 高可用性クラスタ: 高可用性(HA)クラスタ(3 つのマスターノードを持つクラスタ)は、高可用性モードではサポートされていません。マスター インスタンス数は 1 にする必要があります。
高可用性クラスタを作成する
高可用性モードでクラスタを作成するには、Google Cloud CLI または Dataproc API を使用します。
gcloud
高可用性モードでクラスタを作成するには、--master-flexible-config フラグと --worker-flexible-config フラグを指定して gcloud dataproc clusters create コマンドを実行します。
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
--worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"
次のように置き換えます。
CLUSTER_NAME: クラスタの名前。REGION: クラスタの Compute Engine リージョン(例:us-central1)。--zoneは指定しないでください。CORES: VM インスタンスあたりの vCPU の数。2 の累乗(2、4、8、16、32)にする必要があります。HARDWARE_CLASS: ハードウェア プロファイル クラス(STANDARDまたはPERFORMANCE)。NUM_WORKERS: クラスタ内のプライマリ ワーカーノードの数。BOOT_DISK_SIZE: ブートディスクのサイズ(100GBなど)。
セカンダリ ワーカーを追加
高可用性モードでセカンダリ ワーカーノードを追加するには、--secondary-worker-flexible-config フラグを指定します。
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
--worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
--secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"
単一ノードクラスタを作成する
単一ノードの高可用性クラスタを作成するには、--master-flexible-config を指定して --single-node(または --cluster-type=single-node)を指定し、ワーカーの柔軟な構成フラグを省略します。
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--single-node \
--master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"
クラスタ ワーカーの容量を更新する
既存の高可用性クラスタのプライマリ ワーカーまたはセカンダリ ワーカーの数をスケーリングするには、gcloud dataproc clusters update コマンドを使用します。
gcloud dataproc clusters update CLUSTER_NAME \
--region=REGION \
--worker-flexible-config="num-instances=NEW_NUM_WORKERS"
REST
REST API を使用して高可用性クラスタを作成するには、clusters.create リクエストを送信します。ClusterConfig オブジェクトの場合:
- 自動ゾーン プレースメントを有効にするには、
gceClusterConfig.zoneUriを空のままにする(または省略する)必要があります。 masterFlexibleConfigオブジェクトとworkerFlexibleConfigオブジェクトを指定します。
HTTP メソッドと URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters
リクエストの本文(JSON):
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterFlexibleConfig": {
"numInstances": 1,
"coreCount": 4,
"hardwareClass": "STANDARD",
"bootDiskSizeGb": 100
},
"workerFlexibleConfig": {
"numInstances": 2,
"coreCount": 4,
"hardwareClass": "STANDARD",
"bootDiskSizeGb": 100
}
}
}
次のように置き換えます。
PROJECT_ID: 実際の Google Cloud プロジェクト ID。REGION: クラスタが作成される Compute Engine のリージョン(us-central1など)。CLUSTER_NAME: クラスタの名前。
省略可: セカンダリ ワーカーを追加するには、目的の numInstances、coreCount、hardwareClass、bootDiskSizeGb を含む secondaryWorkerFlexibleConfig オブジェクトを追加します。
次のステップ
- 自動ゾーン プレースメントの詳細を確認する。
- フレキシブル VM で VM タイプの優先順位を付ける方法を確認する。
- Managed Service for Apache Spark クラスタをスケーリングする方法を学習する。