En este documento, se describe cómo crear un clúster multizona de Managed Service para Apache Spark. En un clúster multizona, Managed Service para Apache Spark aprovisiona y distribuye las instancias de VM de Compute Engine del clúster en varias zonas de una sola región, en lugar de colocar todos los nodos del clúster en una zona.
Usa un clúster multizonal cuando necesites crear o escalar un clúster grande y la capacidad de una sola zona podría no ser suficiente para satisfacer tu solicitud.
Cómo funcionan los clústeres multizona
Cuando creas un clúster multizona, Managed Service para Apache Spark aprovisiona los nodos del clúster de la siguiente manera:
- Nodos principales: Managed Service para Apache Spark coloca el grupo de instancias principales en una sola zona de la región del clúster con la ubicación automática de zonas.
- Nodos trabajadores: Managed Service para Apache Spark configura los grupos de trabajadores principales y secundarios como grupos de instancias administrados (MIG) regionales. Estos grupos aprovisionan y distribuyen VMs de trabajador en cualquier zona apta de la región que tenga capacidad disponible.
Debido a que Managed Service para Apache Spark distribuye las solicitudes de VM de trabajador en
varias zonas, es menos probable que las restricciones de capacidad en una sola zona bloqueen
tu solicitud. Esto ayuda a evitar errores ZONE_RESOURCE_POOL_EXHAUSTED cuando
creas o escalas clústeres grandes, clústeres con VM Spot o trabajadores secundarios interrumpibles, o clústeres que usan tipos de máquinas de alta demanda.
Requisitos y limitaciones
Para crear un clúster multizona, debes usar una de las siguientes versiones de imagen o una versión posterior en la misma pista de versión de imagen:
| Seguimiento de la versión de la imagen | Versión mínima de la imagen compatible |
|---|---|
| 2.2.x | 2.2.88 |
| 2.3.x | 2.3.37 |
| 3.0.x | 3.0.3 |
Los clústeres multizona tienen las siguientes limitaciones:
- No puedes especificar una configuración de zona única y una configuración multizona en la misma solicitud de creación de clúster.
- No puedes crear un clúster multizonal con más de 1,000 trabajadores principales en la solicitud de creación inicial del clúster. Si tu carga de trabajo requiere más de 1,000 trabajadores principales, crea el clúster con 1,000 trabajadores principales o menos y, luego, escala el clúster después de crearlo.
Costos de transferencia de datos de red
En un clúster de una sola zona, todas las VMs se encuentran en la misma zona, y el tráfico de red que usa direcciones IP internas entre las VMs de la misma zona se ofrece sin cargo. En un clúster de varias zonas, las VMs principales y de trabajador pueden estar en diferentes zonas de la misma región. El tráfico de red entre VMs de diferentes zonas de la misma región genera cargos por transferencia de datos entre zonas.
Para obtener detalles sobre los precios, consulta Precios de las transferencias de datos de VM a VM dentro de Google Cloud.
Crear un clúster multizona
Puedes crear un clúster multizona con Google Cloud CLI o la API de Dataproc.
gcloud
Para crear un clúster multizonal, ejecuta el
comando
gcloud dataproc clusters create con la marca --multizone. No especifiques la marca --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
Reemplaza lo siguiente:
- CLUSTER_NAME: el nombre del clúster
- REGION: Es una
región de Compute Engine disponible
para el clúster, como
us-central1. - IMAGE_VERSION: Es una versión de imagen que admite
clústeres multizona, como
2.3.37-debian12. Para obtener más información, consulta Requisitos y limitaciones. - MASTER_MACHINE_TYPE: Es el
tipo de máquina de Compute Engine del nodo principal, como
n2-standard-4. - WORKER_MACHINE_TYPE: Es el tipo de máquina de Compute Engine de los nodos trabajadores principales, como
n2-standard-4. - NUM_WORKERS: Es la cantidad de trabajadores principales en el
clúster. Este valor no puede ser superior a
1000.
REST
Para crear un clúster multizonal, envía una solicitud
clusters.create. En el objeto gceClusterConfig de la solicitud, deja vacío el campo zoneUri y configura el campo multiZoneConfig.targetShape como ANY.
Método HTTP y URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters
Cuerpo JSON de la solicitud:
{
"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"
}
}
}
Reemplaza lo siguiente:
- PROJECT_ID: Es el ID del proyecto de Google Cloud .
- REGION: Es una
región de Compute Engine disponible
para el clúster, como
us-central1. - CLUSTER_NAME: el nombre del clúster
- IMAGE_VERSION: Es una versión de imagen que admite
clústeres multizona, como
2.3.37-debian12. Para obtener más información, consulta Requisitos y limitaciones. - MASTER_MACHINE_TYPE: Es el
tipo de máquina de Compute Engine del nodo principal, como
n2-standard-4. - NUM_WORKERS: Es la cantidad de trabajadores principales en el
clúster. Este valor no puede ser superior a
1000. - WORKER_MACHINE_TYPE: Es el tipo de máquina de Compute Engine de los nodos trabajadores principales, como
n2-standard-4.
¿Qué sigue?
- Obtén más información sobre la ubicación de zona automática.
- Obtén información para escalar clústeres de Managed Service para Apache Spark.
- Obtén información sobre las formas de distribución objetivo de los MIG regionales.