Criar um cluster de várias zonas

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:

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