Neste documento, descrevemos como criar um cluster do Serviço Gerenciado para Apache Spark no modo de alta disponibilidade (HO, na sigla em inglês). O modo de alta disponibilidade aumenta a probabilidade de provisionar VMs de cluster com sucesso durante períodos de alta demanda ou restrições de recursos, permitindo que o Serviço Gerenciado para Apache Spark selecione entre uma gama de tipos de máquina compatíveis, em vez de exigir um tipo de máquina fixo ao criar um cluster.
Use o modo de alta disponibilidade para criar clusters com requisitos de computação de uso geral para ajudar a evitar falhas de criação e escalonamento de clusters devido à indisponibilidade da VM.
Como funciona o modo de alta disponibilidade
Nas solicitações de criação de cluster padrão, você especifica tipos de máquina específicos (como
n2-standard-4) para nós de cluster. Se esse tipo de máquina específico não estiver disponível
em uma zona, a solicitação de criação vai falhar.
No modo de alta disponibilidade, você especifica requisitos de recursos flexíveis para nós mestre, de worker primário e de worker secundário em vez de tipos de máquina fixos:
- Contagem de núcleos de vCPU: você solicita um número de vCPUs por instância de VM (2, 4, 8, 16 ou 32 núcleos).
Classe de hardware: especifique o perfil de desempenho e memória:
STANDARD: oferece uma configuração equilibrada com aproximadamente 4 GB de memória por vCPU e níveis de armazenamento permanente padrão. Os tipos de máquina candidatos atuais incluemn4-standard,n4d-standard,n2-standarden2d-standard(preferência de classificação 0) ec4-standardec4d-standard(preferência de classificação 1).PERFORMANCE: fornece uma configuração de alto desempenho com aproximadamente 8 GB de memória por vCPU e configurações de disco de nível mais alto (IOPS e capacidade de processamento mais altas). Os tipos de máquina candidatos atuais incluemn4-highmem,n4d-highmem,n2-highmemen2d-highmem(preferência de classificação 0) ec4-highmemec4d-highmem(preferência de classificação 1).
Contagem de instâncias: especifique o número de instâncias para cada grupo:
- Mestre: precisa ser uma instância.
- Workers primários: número inteiro positivo.
- Workers secundários: número inteiro não negativo.
Tamanho do disco de inicialização: tamanho opcional do disco de inicialização (por exemplo, 100 GB).
O Serviço Gerenciado para Apache Spark usa automaticamente o posicionamento de zona automática para avaliar as zonas na região do cluster e selecionar tipos de máquina candidatos na classe de hardware solicitada que tenham capacidade disponível.
Requisitos e limitações
O modo de alta disponibilidade tem os seguintes requisitos e limitações:
- Cotas de recursos: seu projeto precisa ter cotas de recursos do Compute Engine suficientes na região do cluster para todas as famílias de máquinas candidatas na classe de hardware selecionada (
N4,N4D,N2,N2D,C4eC4D). Como os tipos de máquina candidatos são controlados pelo Google e podem mudar a qualquer momento, não dependa de tipos de máquina específicos. - Especificação de zona: não é possível especificar um
--zone(ouzoneUri) explícito. O Serviço Gerenciado para Apache Spark seleciona automaticamente uma zona disponível na região usando o posicionamento de zona automática. - Exclusividade mútua com configurações fixas de máquina e nó:
- Ao configurar grupos de nós mestre, de worker primário ou de worker secundário
com configurações flexíveis (
--master-flexible-config,--worker-flexible-configou--secondary-worker-flexible-config), não é possível especificar o tipo de máquina padrão, a seleção de instâncias, a contagem de instâncias, o disco ou as sinalizações de acelerador para esses grupos de nós:- Master: não pode ser combinado com
--master-machine-type,--master-machine-types,--master-instance-selection,--master-instance-flexibility-policy-file,--master-boot-disk-size,--master-boot-disk-type,--num-master-local-ssds,--master-acceleratorou--master-min-cpu-platform. - Workers primários: não podem ser combinados com
--num-workers,--worker-machine-type,--worker-machine-types,--worker-instance-selection,--worker-instance-flexibility-policy-file,--worker-boot-disk-size,--worker-boot-disk-type,--num-worker-local-ssds,--worker-acceleratorou--worker-min-cpu-platform. - Workers secundários: não podem ser combinados com
--num-secondary-workers,--secondary-worker-type,--secondary-worker-machine-types,--secondary-worker-instance-selection,--secondary-worker-instance-flexibility-policy-file,--secondary-worker-boot-disk-size,--secondary-worker-boot-disk-type,--num-secondary-worker-local-ssdsou--secondary-worker-accelerator.
- Master: não pode ser combinado com
- Em um cluster de vários nós, se o modo de alta disponibilidade estiver ativado para o
grupo de nós mestre, o grupo de nós de trabalho primário também precisará usar configurações
flexíveis (
--worker-flexible-config). - Se workers secundários forem usados em um cluster de alta disponibilidade, eles precisarão
usar
--secondary-worker-flexible-configem vez de flags de worker secundário padrão.
- Ao configurar grupos de nós mestre, de worker primário ou de worker secundário
com configurações flexíveis (
- Clusters de nó único: em um
cluster de nó único
(
--single-nodeou--cluster-type=single-node), apenas--master-flexible-configpode ser especificado. As flags de configuração flexível de workers primários e secundários não são compatíveis. - Atualizações de cluster: é possível atualizar o número de instâncias
(
num-instances) para workers primários e secundários usandogcloud dataproc clusters update. A contagem de núcleos, a classe de hardware e o tamanho do disco de inicialização são especificações de tempo de criação e não podem ser modificados após a criação. - Clusters de alta disponibilidade: os clusters de alta disponibilidade (HA, na sigla em inglês) (clusters com três nós mestre) não são compatíveis com o modo de alta disponibilidade. A contagem de instâncias mestre precisa ser 1.
Criar um cluster de alta disponibilidade
É possível criar um cluster no modo de alta disponibilidade usando a Google Cloud CLI ou a API Dataproc.
gcloud
Para criar um cluster no modo de alta disponibilidade, execute o comando
gcloud dataproc clusters create
com as flags --master-flexible-config e --worker-flexible-config.
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
--worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"
Substitua:
CLUSTER_NAME: o nome do cluster.REGION: a região do Compute Engine do cluster, comous-central1. Não especifique um--zone.CORES: o número de vCPUs por instância de VM. Precisa ser uma potência de 2 (2,4,8,16ou32).HARDWARE_CLASS: a classe do perfil de hardware,STANDARDouPERFORMANCE.NUM_WORKERS: o número de nós de trabalho primários no cluster.BOOT_DISK_SIZE: o tamanho do disco de inicialização, como100GB.
Adicionar workers secundários
Para adicionar nós de trabalho secundários no modo de alta disponibilidade, inclua a
flag --secondary-worker-flexible-config:
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
--worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
--secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"
Criar um cluster de nó único
Para criar um cluster de alta disponibilidade de nó único, especifique --single-node (ou --cluster-type=single-node) com --master-flexible-config e omita as flags de configuração flexível do worker:
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--single-node \
--master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"
Atualizar a capacidade de workers do cluster
Para escalonar o número de workers principais ou secundários em um cluster de alta
disponibilidade, use o comando
gcloud dataproc clusters update:
gcloud dataproc clusters update CLUSTER_NAME \
--region=REGION \
--worker-flexible-config="num-instances=NEW_NUM_WORKERS"
REST
Para criar um cluster de alta disponibilidade usando a API REST, envie uma solicitação clusters.create. No objeto
ClusterConfig:
- Deixe
gceClusterConfig.zoneUrivazio (ou omita-o) para ativar o posicionamento de zona automática. - Especifique os objetos
masterFlexibleConfigeworkerFlexibleConfig.
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": {
"zoneUri": ""
},
"masterFlexibleConfig": {
"numInstances": 1,
"coreCount": 4,
"hardwareClass": "STANDARD",
"bootDiskSizeGb": 100
},
"workerFlexibleConfig": {
"numInstances": 2,
"coreCount": 4,
"hardwareClass": "STANDARD",
"bootDiskSizeGb": 100
}
}
}
Substitua:
PROJECT_ID: o ID do projeto Cloud de Confiance by S3NS .REGION: a região do Compute Engine em que o cluster será criado, comous-central1.CLUSTER_NAME: o nome do cluster.
Opcional: para adicionar workers secundários, inclua o objeto secondaryWorkerFlexibleConfig com os valores desejados para numInstances, coreCount, hardwareClass e bootDiskSizeGb.
A seguir
- Saiba mais sobre o posicionamento de zona automática.
- Saiba como priorizar tipos de VM com VMs flexíveis.
- Saiba como escalonar clusters do Serviço Gerenciado para Apache Spark.