Como ajustar automaticamente 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 de carga de trabalho aplicando automaticamente as configurações do Spark a uma carga de trabalho do Spark recorrente com base nas práticas recomendadas de otimização do Spark e em uma análise das execuções da carga de trabalho.

Inscreva-se no ajuste automático sem servidor do Dataproc

Para se inscrever para o acesso à versão de pré-lançamento do ajuste automático do Dataproc sem servidor descrita nesta página, preencha e envie o formulário de inscrição do Gemini in BigQuery Preview. Depois que o formulário for aprovado, os projetos listados nele terão acesso a recursos de pré-lançamento.

Benefícios

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

  • Melhor desempenho: ajuste de otimização para aumentar 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 e às próximas execuções 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 cargas de trabalho para otimização.
  • Não há suporte para a redução de memória.
  • O ajuste automático não é aplicado retroativamente a cargas de trabalho em execução, apenas a 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, chamadas de coortes. O nome da coorte especificado ao enviar uma carga de trabalho identifica a carga 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 como parte de uma carga de trabalho recorrente. Por exemplo, especifique TPCH-Query1 como o nome da coorte para 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 sem servidor do Dataproc à sua carga de trabalho, selecione um ou mais dos seguintes cenários de ajuste automático:

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

Preços

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

Disponibilidade regional

Use o ajuste automático do Dataproc sem servidor com lotes enviados nas regiões disponíveis do Compute Engine.

Usar o ajuste automático sem servidor do Dataproc

É 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 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 as etapas a seguir:

  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 sua 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 próximas cargas de trabalho enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte para 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 para otimizar a carga de trabalho, por exemplo, OOM, MEMORY e SCALING. É possível alterar a seleção de cenário a cada envio de coorte em lote.
  4. Preencha as 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 do 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 próximas cargas de trabalho enviadas com o nome da coorte. Por exemplo, especifique TPCH Query 1 como o nome da coorte para 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 que serão 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 próximas cargas de trabalho enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte para uma carga de trabalho programada que executa uma consulta diária TPC-H.
  • AutotuningConfig.scenarios: um ou mais cenários de ajuste automático que serão usados para otimizar a carga de trabalho, como OOM, 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:
    - OOM
    - MEMORY
    - SCALING
...

Conferir mudanças de ajuste automático

Para visualizar as alterações do ajuste automático sem servidor do Dataproc 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 ver as alterações de ajuste automático mais recentes que foram 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.