Sebelumnya, jika jenis VM tidak tersedia saat Anda mengirimkan
permintaan pembuatan cluster, permintaan akan gagal, dan Anda perlu memperbarui
permintaan, skrip, atau kode untuk menentukan jenis VM "terbaik berikutnya". Proses permintaan ulang ini dapat melibatkan beberapa iterasi hingga Anda menentukan jenis VM yang tersedia.
Fitur VM Fleksibel Dataproc membantu permintaan pembuatan cluster Anda berhasil dengan memilih jenis VM pekerja sekunder dari daftar VM yang diberi peringkat, lalu menelusuri zona dalam region cluster yang ditentukan dengan ketersediaan jenis VM yang tercantum.
Terminologi
Jenis VM:
Kelompok, kapasitas memori, dan jumlah core CPU instance VM.
Dataproc mendukung penggunaan
jenis VM standar dan kustom.
Pekerja sekunder:
Pekerja sekunder
tidak menyimpan data. Node ini hanya berfungsi sebagai node pemrosesan. Anda dapat menggunakan worker sekunder untuk menskalakan komputasi tanpa menskalakan penyimpanan.
Batasan dan pertimbangan
VM fleksibel tersedia di Dataproc di Compute Engine 2.0.74+,
2.1.22+ dan versi image Dataproc di Compute Engine
yang lebih baru.
Anda hanya dapat menentukan VM fleksibel untuk pekerja sekunder.
Anda dapat menentukan hingga lima daftar jenis VM yang diberi peringkat, dengan maksimal 10 jenis VM dalam satu daftar. Untuk mengetahui informasi selengkapnya, lihat Cara meminta VM fleksibel.
Pembuatan cluster dengan VM fleksibel memerlukan penggunaan
penempatan zona otomatis Dataproc, yang
memungkinkan Dataproc memilih zona yang memiliki kapasitas untuk memenuhi
permintaan jenis VM Anda.
Jika permintaan pembuatan cluster Anda menyertakan kebijakan penskalaan otomatis, VM fleksibel dapat berasal dari berbagai jenis VM, tetapi harus memiliki jumlah memori dan jumlah core yang sama.
Saat menyediakan VM fleksibel, Dataproc menggunakan reservasi yang tersedia "yang cocok", tetapi bukan reservasi "tertentu" (lihat Menggunakan instance yang dicadangkan).
Jenis mesin yang cocok dengan reservasi akan dipilih terlebih dahulu dalam peringkat, diikuti dengan jenis VM dengan jumlah CPU terbesar.
Meskipun Anda dapat menentukan rasio CPU ke memori yang berbeda untuk jenis V pekerja utama dan
sekunder dalam cluster, hal ini dapat menyebabkan penurunan performa
karena rasio CPU ke memori terkecil digunakan sebagai unit container terkecil.
Jika Anda memperbarui cluster yang dibuat menggunakan VM fleksibel, Dataproc akan memilih dan menambahkan pekerja dari daftar VM fleksibel yang Anda berikan saat membuat cluster.
Meminta VM fleksibel
Anda dapat menentukan VM fleksibel saat membuat cluster Dataproc menggunakan konsol Google Cloud , Google Cloud CLI, atau Dataproc API.
Anda dapat menentukan hingga lima daftar jenis VM yang diberi peringkat, dengan maksimal 10 jenis VM dalam satu daftar. Daftar yang memiliki peringkat terendah memiliki prioritas tertinggi. Secara default, daftar VM fleksibel memiliki peringkat 0. Dalam daftar, Dataproc memprioritaskan jenis VM dengan pemesanan yang tidak digunakan, diikuti dengan ukuran VM terbesar.
Jenis VM dalam daftar dengan jumlah CPU yang sama diperlakukan sama.
Konsol
Untuk membuat cluster dengan VM fleksibel pekerja sekunder:
Panel Siapkan cluster dipilih dengan kolom yang diisi dengan nilai default. Anda dapat mengubah nama yang disarankan dan region cluster, serta melakukan perubahan lainnya. Pastikan Any dipilih sebagai Zone cluster untuk mengizinkan penempatan zona otomatis Dataproc memilih zona yang memiliki ketersediaan terbaik untuk jenis VM yang ditentukan dalam daftar VM fleksibel Anda.
Pilih panel Configure nodes. Di bagian Secondary worker nodes, tentukan jumlah dan kemampuan untuk di-preempt worker sekunder.
Klik Tambahkan pekerja sekunder untuk setiap peringkat pekerja sekunder,
dengan menentukan satu atau beberapa jenis mesin yang akan disertakan dalam setiap peringkat.
Setelah mengonfirmasi dan menentukan detail cluster di panel pembuatan cluster, klik Create.
gcloud
Gunakan perintah
gcloud dataproc clusters create
untuk menambahkan beberapa tanda secondary-worker-machine-types guna menentukan daftar VM fleksibel yang diberi peringkat
untuk
worker sekunder Dataproc.
Jenis pekerja sekunder VM fleksibel default adalah Spot, yang merupakan jenis preemptible.
Dalam contoh gcloud CLI berikut, Dataproc mencoba
menyiapkan pekerja sekunder dengan VM n2-standard-8 terlebih dahulu (peringkat 0). Jika
mesin n2-standard-8 tidak tersedia, Dataproc akan mencoba
menyediakan pekerja sekunder dengan VM e2-standard-8 atau t2d-standard-8 (peringkat 1).
--zone="": Fitur VM Fleksibel memerlukan
penempatan zona otomatis Dataproc agar
Dataproc dapat memilih zona yang memiliki jenis VM
Anda yang tersedia untuk digunakan. Meneruskan nilai kosong
("") ke tanda --zone akan menggantikan pilihan zona yang ditentukan di gcloud config list default Anda.
Dataproc menghasilkan properti role komponen berdasarkan core dan memori mesin. Anda dapat mengganti properti yang dibuat sistem ini dengan tanda
--properties, menggunakan sintaksis berikut:
Menggunakan properti cluster untuk menyesuaikan peran komponen: Dataproc membuat properti role komponen berdasarkan core dan memori VM.
Anda dapat mengganti properti yang dibuat sistem ini dengan menambahkan
SoftwareConfig.properties
ke permintaan clusters.create, menggunakan sintaksis key=value berikut:
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-22 UTC."],[[["\u003cp\u003eFlexible VMs allow you to specify prioritized lists of VM types for Dataproc secondary workers, ensuring cluster creation success even if preferred VM types are unavailable.\u003c/p\u003e\n"],["\u003cp\u003eThis feature uses ranked lists of up to five different lists of machine types, with each list containing up to 10 VM types and employing Dataproc autozone placement to select the best-suited zone.\u003c/p\u003e\n"],["\u003cp\u003eFlexible VMs can be set up when creating a Dataproc cluster through the Google Cloud console, gcloud CLI, or Dataproc API, and they only apply to secondary workers that function as processing nodes without storing data.\u003c/p\u003e\n"],["\u003cp\u003eWhen using an autoscaling policy, flexible VMs can be from different families but must maintain the same memory and core count, and the use of a uniform CPU-to-memory ratio for all workers is advised to prevent performance degradation.\u003c/p\u003e\n"],["\u003cp\u003eWhen provisioning flexible VMs, Dataproc prioritizes VM types that have matching unused reservations and then the largest VM sizes within the specified ranks, adhering to Google Cloud quotas.\u003c/p\u003e\n"]]],[],null,["# Dataproc flexible VMs\n\nFlexible VMs is a Dataproc feature that lets you specify\nprioritized lists of [VM types](#vm_types) for Dataproc\n[secondary workers](#secondary_workers) when you\n[create a Dataproc cluster](/dataproc/docs/guides/create-cluster).\n\nWhy use flexible VMs\n--------------------\n\nPreviously, if a VM type was unavailable when you submitted\na cluster creation request, the request failed, and you needed to update\nyour request, script, or code to specify a \"next-best\" VM type. This\nre-request process could involve multiple iterations until you specified a VM type\nthat was available.\n\nThe Dataproc Flexible VM feature helps your cluster creation\nrequest succeed by selecting secondary worker VM types from your ranked VM lists, and then searching\nfor zones within your specified cluster region with availability of the listed VM types.\n\nTerminology\n-----------\n\n- VM type:\n The family, memory capacity, and number of CPU cores of a VM instance.\n Dataproc supports the use of\n [predefined and custom VM types](/dataproc/docs/concepts/compute/supported-machine-types).\n\n- Secondary workers:\n [Secondary workers](/dataproc/docs/concepts/compute/secondary-vms#gcloud-command)\n don't store data. They function only as processing nodes. You can use\n secondary workers to scale compute without scaling storage.\n\nLimitations and considerations\n------------------------------\n\n- Flexible VMs are available in Dataproc on Compute Engine `2.0.74+`,\n `2.1.22+` and later Dataproc on Compute Engine\n [image versions](/dataproc/docs/concepts/versioning/dataproc-version-clusters#supported-dataproc-image-versions).\n\n- You can specify flexible VMs for secondary workers only.\n\n- You can specify up to five ranked VM type lists, with up to 10 VM types\n in a list. For more information, see [How to request flexible VMs](#how_to_request_flexible_vms).\n\n- The creation of a cluster with flexible VMs requires the use of\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone), which\n allows Dataproc to choose the zone that has the capacity to fulfill\n your VM type requests.\n\n- If your cluster creation request includes an\n [autoscaling policy](/dataproc/docs/concepts/configuring-clusters/autoscaling#create_an_autoscaling_cluster),\n flexible VMs can be from different VM families, but they must have the same\n amount of memory and core count.\n\n- When provisioning flexible VMs, Dataproc consumes \"any matching\"\n available reservations, but not \"specific\" reservations (see\n [Consume reserved instances](/compute/docs/instances/reservations-consume#consuming_reserved_instances)).\n Machine types that match reservations are first selected within a rank, followed by\n VM types with the largest number of CPUs.\n\n- [Dataproc applies Google Cloud quotas](/dataproc/quotas)\n to flexible VM provisioning.\n\n- Although you can specify different CPU-to-memory ratios for primary and\n secondary worker V types in a cluster, this can lead to performance degradation\n because the smallest CPU-to-memory ratio is used as the smallest container unit.\n\n | Use a uniform CPU-to-memory ratio for primary and secondary workers, including flexible VMs.\n\n \u003cbr /\u003e\n\n- If you update a cluster that was created using flexible VMs,\n Dataproc selects and adds workers from the flexible VM lists that\n you provided when you created your cluster.\n\nRequest flexible VMs\n--------------------\n\nYou can specify flexible VMs when you create a Dataproc cluster\nusing the Google Cloud console, Google Cloud CLI, or Dataproc API.\n\n- You can specify up to five ranked VM type lists, with up to 10 VM types in a list. Lowest ranked lists have the highest priority. By default, flexible VM lists have a rank of 0. Within a list, Dataproc prioritizes VM types with unused reservations, followed by the largest VM sizes. VM types within a list with the same CPU count are treated equally.\n\n### Console\n\nTo create a cluster with secondary worker flexible VMs:\n\n1. Open the Dataproc\n [**Create a cluster on Compute Engine**](https://console.cloud.google.com/dataproc/clustersAdd)\n page in the Google Cloud console.\n\n2. The **Set up cluster** panel is selected with fields filled in with default\n values. You can change the suggested name and the cluster region, and\n make other changes. Make sure that **Any** is selected as the cluster\n **Zone** to allow\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone)\n to choose the zone that has the best availability of the\n VM types specified in your flexible VM lists.\n\n3. Select the **Configure nodes** panel. In the **Secondary worker nodes**\n section, specify the number and preemptibility of secondary workers.\n\n - Click **Add a secondary worker** for each rank of secondary workers, specifying one or more machine types to include in each rank.\n4. After confirming and specifying cluster details in the cluster create panels,\n click **Create**.\n\n### gcloud\n\nUse the\n[`gcloud dataproc clusters create`](/sdk/gcloud/reference/dataproc/clusters/create)\ncommand to add multiple `secondary-worker-machine-types` flags to specify ranked\nflexible VM lists for\n[Dataproc secondary workers](/dataproc/docs/concepts/compute/secondary-vms).\nThe default flexible VM secondary worker type is Spot, which is a preemptible type.\n\nIn the following gcloud CLI example, Dataproc attempts\nto provision secondary workers with `n2-standard-8` VMs first (rank 0). If\nn2-standard-8 machines are not available, Dataproc attempts\nto provision secondary workers with either `e2-standard-8` or `t2d-standard-8`\nVMs (rank 1). \n\n```\ngcloud dataproc clusters create CLUSTER_NAME \\\n --region=REGION \\\n --zone=\"\" \\\n --master-machine-type=n1-standard-8 \\\n --worker-machine-type=n1-standard-8 \\\n --num-workers=4 \\\n --num-secondary-workers=4 \\\n --secondary-worker-type=non-preemptible \\\n --secondary-worker-machine-types=\"type=n2-standard-8,rank=0\" \\\n --secondary-worker-machine-types=\"type=e2-standard-8,type=t2d-standard-8,rank=1\"\n```\n\nNotes:\n\n- `--zone=\"\"`: The Flexible VM feature requires\n [Dataproc autozone placement](/dataproc/docs/concepts/configuring-clusters/auto-zone) to\n allow Dataproc to choose the zone that has your\n VM types available for use. Passing an empty value\n (\"\") to the `--zone` flag overrides any zone selection specified in your default\n `gcloud config list`.\n\n- Dataproc generates component `role` properties based on machine\n cores and memory. You can override these system-generated properties with the\n `--properties` flag, using the following syntax:\n\n ```\n --properties=\"ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE\"\n ```\n\n Only the `secondary_worker` role is the only supported role.\n\n In the following example, the `--properties` flag changes the number of cores\n of `e2-standard-8` machines assigned to secondary worker nodes from `8` to `6`: \n\n ```\n --properties=\"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6\"\n ```\n\n### API\n\nUse the [`instanceFlexibilityPolicy.instanceSelectionList`](/dataproc/docs/reference/rest/v1/InstanceGroupConfig#InstanceFlexibilityPolicy.FIELDS.instance_selection_list)\nas part of a Dataproc API\n[`clusters.create`](/dataproc/docs/reference/rest/v1/projects.regions.clusters/create)\nrequest to specify a ranked list of [machineTypes]() for secondary workers.\n\nExample:\n\nThe following JSON snippet from a Dataproc `clusters.create`\n[request body](/dataproc/docs/reference/rest/v1/projects.regions.clusters/create#request-body)\nspecifies secondary workers machine types for rank 0 and rank 1. \n\n```\n\"config\": {\n \"secondaryWorkerConfig\": {\n \"instanceFlexibilityPolicy\": {\n \"instanceSelectionList\": [\n {\n \"machineTypes\": [\n \"n1-standard-4\",\n \"n2-standard-4\"\n ],\n \"rank\": 0\n },\n {\n \"machineTypes\": [\n \"e2-standard-4\",\n \"n2d-standard-4\"\n ],\n \"rank\": 1\n }\n ]\n }\n }\n}\n```\n\n**Use cluster properties to customize component roles:** Dataproc\ngenerates component `role` properties based on VM cores and memory.\nYou can override these system-generated properties by adding\n[`SoftwareConfig.properties`](/static/dataproc/docs/reference/rest/v1/ClusterConfig#SoftwareConfig.FIELDS.properties)\nto your `clusters.create` request, using the following \u003cvar translate=\"no\"\u003ekey\u003c/var\u003e`=`\u003cvar translate=\"no\"\u003evalue\u003c/var\u003e syntax: \n\n```\nROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE\n```\n\nOnly the `secondary_worker` role is the only supported role.\n\nIn the following example, the `properties` field changes the number of cores\nassigned to the secondary worker node of an `e2-standard-8` VM from `8` to `6`:\n\n\u003cbr /\u003e\n\n```\n\"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6\"\n \n```\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e"]]