Stay organized with collections
Save and categorize content based on your preferences.
When you
create or
update
a Dataproc on GKE virtual cluster, you specify one or more node pools that
the virtual cluster will use to run jobs (this cluster is referred to as the
cluster "used by" or "associated" with the specified node pools). If a specified node pool
does not exist on your GKE cluster, Dataproc on GKE
will create the node pool on the GKE cluster with settings
you specify. If the node pool exists and was created by Dataproc,
it will be validated to confirm that its settings match the specified settings.
Dataproc on GKE node pool settings
You can specify the following
settings
on node pools used by your Dataproc on GKE virtual clusters (these
settings are a subset of
GKE node pool settings):
When a Dataproc on GKE cluster is deleted, the node pools used by the cluster
are not deleted. See Delete a node pool
to delete node pools no longer in use by Dataproc on GKE clusters.
Node pool location
You can specify the
zone
location of node pools associated with your Dataproc on GKE virtual cluster
when you create or update the virtual cluster. The node pool zones must be
located in the region of the associated virtual cluster.
Role to node pool mapping
Node pool roles
are defined for Spark driver and executor work, with a default role
defined for all types of work by a node pool. Dataproc on GKE clusters must have
at least one a node pool that is assigned the default role.
Assigning other roles is optional.
Recommendation: Create separate node pools for each role type, with node type
and size based on role requirements.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-25 UTC."],[[["\u003cp\u003eDataproc on GKE virtual clusters utilize node pools to run jobs, and if a specified node pool doesn't exist, Dataproc on GKE will create it with the designated settings.\u003c/p\u003e\n"],["\u003cp\u003eYou can define various settings for Dataproc on GKE node pools, including \u003ccode\u003eaccelerators\u003c/code\u003e, \u003ccode\u003emachineType\u003c/code\u003e, \u003ccode\u003eminNodeCount\u003c/code\u003e, \u003ccode\u003emaxNodeCount\u003c/code\u003e, \u003ccode\u003epreemptible\u003c/code\u003e, and \u003ccode\u003espot\u003c/code\u003e, among others.\u003c/p\u003e\n"],["\u003cp\u003eWhen a Dataproc on GKE cluster is deleted, the associated node pools are not automatically deleted, and they need to be deleted separately.\u003c/p\u003e\n"],["\u003cp\u003eNode pool zones must reside within the same region as the associated virtual cluster, and they can be specified when creating or updating the virtual cluster.\u003c/p\u003e\n"],["\u003cp\u003eNode pools are assigned roles such as \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003espark-driver\u003c/code\u003e, and \u003ccode\u003espark-executor\u003c/code\u003e, with at least one node pool needing to be assigned the \u003ccode\u003edefault\u003c/code\u003e role.\u003c/p\u003e\n"]]],[],null,["# Dataproc on GKE node pools\n\nWhen you\n[create](/dataproc/docs/guides/dpgke/quickstarts/dataproc-gke-quickstart-create-cluster) or\n[update](/dataproc/docs/guides/dpgke/dataproc-gke-recreate-cluster)\na Dataproc on GKE virtual cluster, you specify one or more node pools that\nthe virtual cluster will use to run jobs (this cluster is referred to as the\ncluster \"used by\" or \"associated\" with the specified node pools). If a specified node pool\ndoes not exist on your GKE cluster, Dataproc on GKE\nwill create the node pool on the GKE cluster with settings\nyou specify. If the node pool exists and was created by Dataproc,\nit will be validated to confirm that its settings match the specified settings.\n\n### Dataproc on GKE node pool settings\n\nYou can specify the following\n[settings](/dataproc/docs/reference/rest/v1/projects.regions.clusters#gkenodeconfig)\non node pools used by your Dataproc on GKE virtual clusters (these\nsettings are a subset of\n[GKE node pool settings](/kubernetes-engine/docs/reference/rest/v1/NodeConfig)):\n\n- `accelerators`\n- `acceleratorCount`\n- `acceleratorType`\n- `gpuPartitionSize`\\*\n- `localSsdCount`\n- `machineType`\n- `minCpuPlatform`\n- `minNodeCount`\n- `maxNodeCount`\n- `preemptible`\n- `spot`\\*\n\nNotes:\n\n- `gpuPartitionSize` can be set in the Dataproc API [`GkeNodePoolAcceleratorConfig`](/dataproc/docs/reference/rest/v1/GkeClusterConfig#gkenodepoolacceleratorconfig).\n- `spot` can be set in the Dataproc API [GkeNodeConfig](/dataproc/docs/reference/rest/v1/projects.regions.clusters#gkenodeconfig).\n\nNode pool deletion\n------------------\n\nWhen a Dataproc on GKE cluster is deleted, the node pools used by the cluster\nare not deleted. See [Delete a node pool](/kubernetes-engine/docs/how-to/node-pools#deleting_a_node_pool)\nto delete node pools no longer in use by Dataproc on GKE clusters.\n\nNode pool location\n------------------\n\nYou can specify the\n[zone](/dataproc/docs/reference/rest/v1/projects.regions.clusters#GkeNodePoolConfig.FIELDS.locations)\nlocation of node pools associated with your Dataproc on GKE virtual cluster\nwhen you create or update the virtual cluster. The node pool zones must be\nlocated in the region of the associated virtual cluster.\n\nRole to node pool mapping\n-------------------------\n\nNode pool [roles](/dataproc/docs/reference/rest/v1/projects.regions.clusters#Role)\nare defined for Spark driver and executor work, with a default role\ndefined for all types of work by a node pool. Dataproc on GKE clusters must have\nat least one a node pool that is assigned the `default` role.\nAssigning other roles is optional.\n\n**Recommendation:** Create separate node pools for each role type, with node type\nand size based on role requirements.\n\ngcloud CLI virtual cluster creation example: \n\n```\ngcloud dataproc clusters gke create \"${DP_CLUSTER}\" \\\n --region=${REGION} \\\n --gke-cluster=${GKE_CLUSTER} \\\n --spark-engine-version=latest \\\n --staging-bucket=${BUCKET} \\\n --pools=\"name=${DP_POOLNAME},roles=default \\\n --setup-workload-identity\n --pools=\"name=${DP_CTRL_POOLNAME},roles=default,machineType=e2-standard-4\" \\\n --pools=\"name=${DP_DRIVER_POOLNAME},min=1,max=3,roles=spark-driver,machineType=n2-standard-4\" \\\n --pools=\"name=${DP_EXEC_POOLNAME},min=1,max=10,roles=spark-executor,machineType=n2-standard-8\"\n```"]]