Como ajustar automaticamente as cargas de trabalho do Spark

Otimizar uma carga de trabalho do Spark para desempenho e resiliência pode ser um desafio devido ao número de opções de configuração do Spark e à dificuldade de avaliar como essas opções afetam uma carga de trabalho. O ajuste automático do Dataproc sem servidor oferece uma alternativa à configuração manual da carga de trabalho aplicando automaticamente as configurações do Spark a uma carga de trabalho recorrente dele com base nas práticas recomendadas de otimização do Spark e em uma análise das execuções de carga de trabalho.

Inscreva-se para o ajuste automático do Dataproc sem servidor

Para se inscrever para acessar a versão de pré-lançamento do ajuste automático sem servidor do Dataproc sem servidor descrita nesta página, preencha e envie o formulário de inscrição do Gemini na pré-visualização do BigQuery. Após a aprovação do formulário, os projetos listados nele terão acesso aos recursos de prévia.

Benefícios

O ajuste automático do Dataproc sem servidor oferece os seguintes benefícios:

  • Performance aprimorada: ajuste de otimização para melhorar o desempenho.
  • Otimização mais rápida: configuração automática para evitar testes de configuração manuais demorados.
  • Maior resiliência: alocação automática de memória para evitar falhas relacionadas à memória.

Limitações

O ajuste automático do Dataproc sem servidor tem as seguintes limitações:

  • O ajuste automático é calculado e aplicado à segunda execução e às execuções subsequentes de uma carga de trabalho. A primeira execução de uma carga de trabalho recorrente não é ajustada automaticamente porque o ajuste automático do Dataproc sem servidor usa o histórico de carga de trabalho para otimização.
  • Não há suporte para redução de memória.
  • O ajuste automático não é aplicado de maneira retroativa às cargas de trabalho em execução, apenas às coortes de carga de trabalho recém-enviadas.

Coortes de ajuste automático

O ajuste automático é aplicado a execuções recorrentes de uma carga de trabalho em lote, chamada de coortes. O nome da coorte especificado ao enviar uma carga de trabalho a identifica como uma das execuções sucessivas da carga de trabalho recorrente. Recomendamos que você use nomes de coorte que descrevam o tipo de carga de trabalho ou que ajudem a identificar as execuções de uma carga de trabalho como parte de uma carga de trabalho recorrente. Por exemplo, especifique TPCH-Query1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.

Cenários de ajuste automático

Para aplicar o ajuste automático do Dataproc sem servidor à carga de trabalho, selecione um ou mais dos seguintes cenários de ajuste automático:

  • MEMORY: ajusta automaticamente a alocação de memória do Spark para prever e evitar possíveis erros de falta de memória na carga de trabalho. Corrigir uma carga de trabalho com falha anteriormente devido a um erro de falta de memória (OOM, na sigla em inglês).
  • SCALING: ajustar automaticamente as configurações de escalonamento automático do Spark.
  • BHJ: ajustar automaticamente as configurações do Spark para otimizar o desempenho da junção de transmissão SQL.

Preços

O ajuste automático do Dataproc sem servidor é oferecido durante o pré-lançamento sem custo adicional. São aplicáveis os preços padrão do Dataproc sem servidor.

Disponibilidade regional

É possível usar o ajuste automático do Dataproc sem servidor com lotes que são enviados nas regiões disponíveis do Compute Engine.

Usar o ajuste automático do Dataproc sem servidor

É possível ativar o ajuste automático do Dataproc sem servidor em uma carga de trabalho usando o console do Google Cloud, a Google Cloud CLI ou a API Dataproc.

Console

Para ativar o ajuste automático do Dataproc sem servidor em cada envio de uma carga de trabalho em lote recorrente, siga estas etapas:

  1. No console do Google Cloud, acesse a página Lotes do Dataproc.

    Acessar Lotes do Dataproc

  2. Para criar uma carga de trabalho em lote, clique em Criar.

  3. Na seção Contêiner, preencha os seguintes campos da carga de trabalho do Spark:

    • Coorte: o nome da coorte, que identifica o lote como uma de uma série de cargas de trabalho recorrentes. O ajuste automático é aplicado à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.
    • Cenários de ajuste automático: um ou mais cenários de ajuste automático a serem usados para otimizar a carga de trabalho, por exemplo, BHJ, MEMORY e SCALING. É possível mudar a seleção de cenário a cada envio de coorte em lote.
  4. Preencha outras seções da página Criar lote conforme necessário e clique em Enviar. Para mais informações sobre esses campos, consulte Enviar uma carga de trabalho em lote.

gcloud

Para ativar o ajuste automático do Dataproc sem servidor em cada envio de uma carga de trabalho em lote recorrente, execute o seguinte comando gcloud dataproc batches submit da CLI gcloud localmente em uma janela de terminal ou no Cloud Shell.

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    --autotuning-scenarios=SCENARIOS \
    other arguments ...

Substitua:

  • COMMAND: o tipo de carga de trabalho do Spark, como Spark, PySpark, Spark-Sql ou Spark-R.
  • REGION: a região em que a carga de trabalho será executada.
  • COHORT: o nome da coorte, que identifica o lote como uma de uma série de cargas de trabalho recorrentes. O ajuste automático é aplicado à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH Query 1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.
  • SCENARIOS: um ou mais cenários de ajuste automático separados por vírgulas a serem usados para otimizar a carga de trabalho. Por exemplo, --autotuning-scenarios=OOM,MEMORY,SCALING. É possível alterar a lista de cenários a cada envio de coorte em lote.

API

Para ativar o ajuste automático do Dataproc sem servidor em cada envio de uma carga de trabalho em lote recorrente, envie uma solicitação batches.create que inclua os seguintes campos:

  • RuntimeConfig.cohort: o nome da coorte, que identifica o lote como uma de uma série de cargas de trabalho recorrentes. O ajuste automático é aplicado à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.
  • AutotuningConfig.scenarios: um ou mais cenários de ajuste automático a serem usados para otimizar a carga de trabalho, por exemplo, BHJ, MEMORY e SCALING. É possível alterar a lista de cenários a cada envio de coorte em lote.

Exemplo:

...
runtimeConfig:
  cohort: TPCH-Query1
  autotuningConfig:
    scenarios:
    - BHJ
    - MEMORY
    - SCALING
...

Conferir mudanças no ajuste automático

Para visualizar as alterações no ajuste automático do Dataproc sem servidor em uma carga de trabalho em lote, execute o comando gcloud dataproc batches describe.

Exemplo: a saída gcloud dataproc batches describe é semelhante a esta:

...
runtimeInfo:
   propertiesInfo:
    # Properties set by autotuning.
    autotuningProperties
      spark.driver.memory:
        annotation: Driver OOM was detected
        value: 11520m
      spark.driver.memoryOverhead:
        annotation: Driver OOM was detected
        value: 4608m
    # Old overwritten properties.
    userProperties
...

Também é possível visualizar as alterações mais recentes de ajuste automático aplicadas a uma carga de trabalho em execução, concluída ou com falha na página Detalhes do lote no console do Google Cloud, na guia Investigar.

Painel de investigação do ajuste automático.