Melhorias no desempenho do Dataproc Spark

Neste documento, mostramos como ativar as melhorias de desempenho do Spark para que seus jobs do Dataproc Spark processem mais dados em menos tempo com custos reduzidos.

As melhorias de desempenho do Dataproc Spark incluem:

  • Melhorias no Spark Otimizador:
    • Regras do otimizador criadas para planos Spark melhores
    • Melhoria no desempenho do conector do BigQuery para Dataproc quando usado em jobs do Spark.
  • Melhorias na execução do Spark:
    • Melhorias no mecanismo de execução do Spark

Outras melhorias de desempenho do Dataproc: consulte Armazenamento em cache de cluster do Dataproc, que ajuda a reduzir o tempo gasto acessando dados no Cloud Storage.

Como ativar as melhorias de desempenho do Dataproc Spark

Use o console do Google Cloud, a Google Cloud CLI e a API Dataproc para ativar as melhorias de desempenho do Dataproc Spark ao criar um Dataproc no cluster do Compute Engine ou ao enviar o job do Spark para o cluster.

Console

Ativar melhorias na criação do cluster

Siga as etapas a seguir para ativar a otimização do Spark e as melhorias na execução ao criar um cluster do Dataproc. As melhorias ativadas permanecem em vigor para todos os jobs do Spark enviados ao cluster, a menos que você as desative para um job específico ao enviá-lo. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas em um cluster do Dataproc.

  1. No console do Google Cloud, abra a página Criar um cluster do Dataproc.
  2. No formulário Criar cluster do Dataproc, clique em Criar na linha Cluster no Compute Engine.
  3. Na página Criar um cluster do Dataproc no Compute Engine, clique no painel Personalizar cluster e role até a seção Propriedades do cluster.
    1. Para ativar melhorias de otimização do Spark, faça o seguinte:
      1. Clique em + ADICIONAR PROPRIEDADES.
      2. Selecione spark na lista Prefixo e adicione "spark.dataproc.enhanced.optimizer.enabled" no campo Chave e "true" no campo Valor.
    2. Para ativar melhorias na execução do Spark, faça o seguinte:
      1. Clique em + ADICIONAR PROPRIEDADES.
      2. Selecione spark na lista Prefixo e adicione "spark.dataproc.enhanced.execution.enabled" no campo Chave e "true" no campo Valor.
  4. Preencha ou confirme os outros campos de criação de cluster e clique em Criar.

Ativar melhorias no envio do job

Execute as etapas a seguir para ativar as otimizações do Spark e as melhorias de execução para um job do Spark. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas nos jobs do Spark, a menos que você as ative ao criar um cluster de jobs ou ativá-las para um job específico.

  1. No console do Google Cloud, abra a página Jobs do Dataproc.
  2. Na página Jobs, clique em Enviar job e role até a seção Propriedades do job.
    1. Para ativar melhorias de otimização do Spark, faça o seguinte:
      1. Clique em + ADICIONAR PROPRIEDADES. Adicione "spark.dataproc.enhanced.optimizer.enabled" no campo Chave e "verdadeiro" no campo Valor.
    2. Para ativar melhorias na execução do Spark, faça o seguinte:
      1. Clique em + ADICIONAR PROPRIEDADES.
      2. Adicione "spark.dataproc.enhanced.execution.enabled" no campo Chave e "verdadeiro" no campo Valor.
  3. Preencha ou confirme os outros campos de envio de job e clique em Enviar.

gcloud

Ativar melhorias na criação do cluster

Siga as etapas a seguir para ativar a otimização do Spark e as melhorias na execução ao criar um cluster do Dataproc. As melhorias ativadas permanecem em vigor para todos os jobs do Spark enviados ao cluster, a menos que você as desative para um job específico ao enviá-lo. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas em um cluster do Dataproc.

  1. Execute localmente o seguinte comando gcloud dataproc clusters create em uma janela do terminal ou no Cloud Shell.

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    Observações:

    • CLUSTER_NAME: o nome do cluster, que precisa ser exclusivo em um projeto. O nome precisa começar com uma letra minúscula e pode conter até 51 letras minúsculas, números e hifens. Ele não pode terminar com hífen. O nome de um cluster excluído pode ser reutilizado.
    • PROJECT_ID: o projeto a ser associado ao cluster.
    • REGION: a região do Compute Engine em que o cluster estará localizado, como us-central1.
      • É possível adicionar a sinalização --zone=ZONE opcional para especificar uma zona dentro da região especificada, como us-central1-a. Se você não especificar uma zona, o recurso de colocação em zona automática do Dataproc selecionará uma zona com a região especificada.
    • IMAGE: o otimizador Spark do Dataproc e as melhorias de desempenho de execução estão disponíveis nas versões de imagem 2.0.69+ e 2.1.17+ e mais recentes do Dataproc. Se você omitir essa sinalização, o Dataproc selecionará a versão subsecundária mais recente da imagem padrão do Dataproc no Compute Engine para o cluster (consulte Versão de imagem padrão do Dataproc).
    • PROPERTIES:

      • Para ativar as melhorias de otimização do Spark, especifique as seguintes opções:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Para ativar as melhorias de execução do Spark, especifique o seguinte:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Para ativar a otimização e as melhorias na execução do Spark, especifique o seguinte:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      
      

Ativar melhorias no envio do job

Execute as etapas a seguir para ativar as otimizações do Spark e as melhorias de execução para um job do Spark. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas nos jobs do Spark, a menos que você as ative ao criar um cluster de jobs ou ativá-las para um job específico.

  1. Execute localmente o comando gcloud dataproc jobs submit a seguir em uma janela do terminal ou no Cloud Shell.

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    Observações:

    • SPARK_JOB_TYPE: especifique spark, pyspark, spark-sql ou spark-r .
    • CLUSTER_NAME: o nome do job em que ele será executado.
    • REGION: a região em que o cluster está localizado.
    • PROPERTIES:

      • Para ativar as melhorias de otimização do Spark, especifique as seguintes opções:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • Para ativar as melhorias de execução do Spark, especifique o seguinte:
      spark.dataproc.enhanced.execution.enabled=true
      
      • Para ativar a otimização e as melhorias na execução do Spark, especifique o seguinte:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled
      

API

Ativar melhorias na criação do cluster

Siga as etapas a seguir para ativar a otimização do Spark e as melhorias na execução ao criar um cluster do Dataproc. As melhorias ativadas permanecem em vigor para todos os jobs do Spark enviados ao cluster, a menos que você as desative para um job específico ao enviá-lo. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas em um cluster do Dataproc.

  1. Especifique o SoftwareConfig.properties abaixo como parte de uma solicitação clusters.create:

    • Para ativar as melhorias de otimização do Spark, especifique as seguintes opções:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • Para ativar as melhorias de execução do Spark, especifique o seguinte:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Para ativar a otimização e as melhorias na execução do Spark, especifique o seguinte:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Ativar melhorias no envio do job

Execute as etapas a seguir para ativar as otimizações do Spark e as melhorias de execução para um job do Spark. Por padrão, as melhorias de desempenho do Dataproc Spark são desativadas nos jobs do Spark, a menos que você as ative ao criar um cluster de jobs ou ativá-las para um job específico.

  1. Especifique o properties a seguir para um SparkJob, PySparkJob, SparkSqlJob ou SparkRJob como parte de uma solicitação jobs.submit:

    • Para ativar as melhorias de otimização do Spark, especifique as seguintes opções:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • Para ativar as melhorias de execução do Spark, especifique o seguinte:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Para ativar a otimização e as melhorias na execução do Spark, especifique o seguinte:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"