Neste documento, descrevemos como criar um cluster multizona do Serviço Gerenciado para Apache Spark. Em um cluster multizona, o Serviço Gerenciado para Apache Spark provisiona e distribui as instâncias de VM do Compute Engine do cluster em várias zonas em uma única região, em vez de colocar todos os nós do cluster em uma zona.
Use um cluster multizonal quando precisar criar ou escalonar um cluster grande e a capacidade de uma única zona não for suficiente para atender à sua solicitação.
Como os clusters de várias zonas funcionam
Quando você cria um cluster multizona, o Managed Service for Apache Spark provisiona os nós do cluster da seguinte maneira:
- Nós mestres: o Managed Service para Apache Spark coloca o grupo de instâncias mestre em uma única zona na região do cluster usando o posicionamento automático de zona.
- Nós de trabalho: o Serviço Gerenciado para Apache Spark configura os grupos de workers primários e secundários como grupos de instâncias gerenciadas (MIGs) regionais. Esses grupos provisionam e distribuem VMs de worker em qualquer zona qualificada na região que tenha capacidade disponível.
Como o Serviço Gerenciado para Apache Spark distribui as solicitações de VM de worker em
várias zonas, as restrições de capacidade em uma única zona têm menos probabilidade de bloquear
sua solicitação. Isso ajuda a evitar erros ZONE_RESOURCE_POOL_EXHAUSTED ao
criar ou escalonar clusters grandes, clusters com VM spot ou workers secundários
preemptivos ou clusters que usam tipos de máquina de alta demanda.
Requisitos e limitações
Para criar um cluster multizonal, use uma das seguintes versões de imagem ou uma versão posterior na mesma faixa de versão de imagem:
| Faixa da versão de imagem | Versão mínima de imagem compatível |
|---|---|
| 2.2.x | 2.2.88 |
| 2.3.x | 2.3.37 |
| 3.0.x | 3.0.3 |
Os clusters multizona têm as seguintes limitações:
- Não é possível especificar uma configuração de zona única e de várias zonas na mesma solicitação de criação de cluster.
- Não é possível criar um cluster de várias zonas com mais de 1.000 workers primários na solicitação inicial de criação de cluster. Se a carga de trabalho exigir mais de 1.000 workers primários, crie o cluster com 1.000 ou menos workers primários e, em seguida, dimensione o cluster depois que ele for criado.
Custos de transferência de dados de rede
Em um cluster de zona única, todas as VMs estão na mesma zona, e o tráfego de rede que usa endereços IP internos entre VMs na mesma zona é oferecido sem custo financeiro. Em um cluster de várias zonas, as VMs mestre e de worker podem estar em zonas diferentes na mesma região. O tráfego de rede entre VMs em zonas diferentes na mesma região gera cobranças de transferência de dados entre zonas.
Para detalhes sobre preços, consulte Preços da transferência de dados entre VMs no Google Cloud.
Criar um cluster de várias zonas
É possível criar um cluster de várias zonas usando a Google Cloud CLI ou a API Dataproc.
gcloud
Para criar um cluster multizonal, execute o comando gcloud dataproc clusters create com a flag --multizone. Não especifique a flag --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
Substitua:
- CLUSTER_NAME: o nome do cluster.
- REGION: uma
região disponível do Compute Engine
para o cluster, como
us-central1. - IMAGE_VERSION: uma versão de imagem compatível com
clusters multizonais, como
2.3.37-debian12. Para mais informações, consulte Requisitos e limitações. - MASTER_MACHINE_TYPE: o tipo de máquina do Compute Engine do nó mestre, como
n2-standard-4. - WORKER_MACHINE_TYPE: o
tipo de máquina do Compute Engine dos nós de trabalho primários, como
n2-standard-4. - NUM_WORKERS: o número de workers primários no
cluster. Esse valor não pode ser maior que
1000.
REST
Para criar um cluster de várias zonas, envie uma solicitação clusters.create. No objeto
gceClusterConfig
da solicitação, deixe o campo zoneUri vazio e defina o campo
multiZoneConfig.targetShape como ANY.
Método HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters
Corpo JSON da solicitação:
{
"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"
}
}
}
Substitua:
- PROJECT_ID: o ID do projeto Google Cloud .
- REGION: uma
região disponível do Compute Engine
para o cluster, como
us-central1. - CLUSTER_NAME: o nome do cluster.
- IMAGE_VERSION: uma versão de imagem compatível com
clusters multizonais, como
2.3.37-debian12. Para mais informações, consulte Requisitos e limitações. - MASTER_MACHINE_TYPE: o tipo de máquina do Compute Engine do nó mestre, como
n2-standard-4. - NUM_WORKERS: o número de workers primários no
cluster. Esse valor não pode ser maior que
1000. - WORKER_MACHINE_TYPE: o
tipo de máquina do Compute Engine dos nós de trabalho primários, como
n2-standard-4.
A seguir
- Saiba mais sobre o posicionamento de zona automática.
- Saiba como escalonar clusters do Serviço Gerenciado para Apache Spark.
- Saiba mais sobre os formatos de distribuição de destino do MIG regional.