Este documento mostra como ativar as melhorias de desempenho do Dataproc Spark para ajudar as tarefas do Dataproc Spark a processar mais dados em menos tempo com custos reduzidos.
As melhorias de desempenho do Dataproc Spark incluem:
- Melhoramentos do otimizador do Spark:
- Regras do otimizador escritas para melhores planos do Spark
- Desempenho melhorado do conetor do Dataproc BigQuery quando usado em tarefas do Spark
- Melhoramentos da execução do Spark:
- Melhorias no motor de execução do Spark
Outras melhorias de desempenho do Dataproc: consulte a secção sobre a colocação em cache de clusters do Dataproc, que ajuda a reduzir o tempo gasto no acesso a dados no Cloud Storage.
Pode ativar as melhorias de desempenho do Spark num cluster ou num trabalho do Spark:
As melhorias de desempenho do Spark ativadas num cluster aplicam-se, por predefinição, a todas as tarefas do Spark executadas no cluster, quer sejam enviadas para o serviço Dataproc ou enviadas diretamente para o cluster.
As melhorias de desempenho do Spark também podem ser ativadas ou desativadas numa tarefa enviada para o serviço Dataproc. As definições de melhorias de desempenho do Spark aplicadas a uma tarefa substituem quaisquer definições em conflito definidas ao nível do cluster apenas para a tarefa especificada.
Preços
As melhorias de desempenho do Spark não incorrem em encargos adicionais. Aplicam-se os preços do Dataproc no Compute Engine padrão.
Considerações
As melhorias de desempenho do Spark ajustam as propriedades do Spark, incluindo as seguintes propriedades:
spark.sql.shuffle.partitions
: Os melhoramentos de desempenho do Spark definem esta propriedade como1000
para clusters da versão de imagem2.2
. Esta definição pode tornar as tarefas pequenas mais lentas.spark.dataproc.sql.catalog.file.index.stats.enabled
: Esta definição pode resultar em condições de OOM (sem memória) do controlador se o número de partições do Hive for elevado. A desativação desta propriedade pode corrigir a condição de falta de memória.
Ative melhoramentos na criação de clusters
Pode usar a Google Cloud consola, a CLI Google Cloud e a API Dataproc para ativar as melhorias de desempenho do Dataproc Spark quando cria um cluster Dataproc com versões de imagens 2.0.69+, 2.1.17+, 2.2.0+ e lançamentos de imagens posteriores.
Consola
- Na Google Cloud consola, abra a página do Dataproc Criar um cluster.
- No formulário Criar cluster do Dataproc, clique em Criar na linha Cluster no Compute Engine.
- Na página Crie um cluster do Dataproc no Compute Engine,
clique no painel Personalizar cluster e, de seguida, desloque a página até à secção
Propriedades do cluster.
- Para ativar os melhoramentos de otimização do Spark:
- Clique em + ADICIONAR PROPRIEDADES.
- Selecione spark na lista Prefixo e, de seguida, adicione "spark.dataproc.enhanced.optimizer.enabled" no campo Chave e "true" no campo Valor.
- Para ativar os melhoramentos de execução do Spark:
- Clique em + ADICIONAR PROPRIEDADES.
- Selecione spark na lista Prefixo e, de seguida, adicione "spark.dataproc.enhanced.execution.enabled" no campo Chave e "true" no campo Valor.
- Para ativar os melhoramentos de otimização do Spark:
- Conclua o preenchimento ou a confirmação dos outros campos de criação de clusters e, de seguida, clique em Criar.
gcloud
Execute o seguinte comando gcloud dataproc clusters create localmente numa janela de terminal ou no Cloud Shell.
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
Notas:
- CLUSTER_NAME: o nome do cluster, que tem de ser exclusivo num projeto. O nome tem de começar por uma letra minúscula e pode conter até 51 letras minúsculas, números e hífenes. Não pode terminar com um hífen. O nome de um cluster eliminado pode ser reutilizado.
- PROJECT_ID: o projeto a associar ao cluster.
- REGION: a
região do Compute Engine
onde o cluster vai estar localizado, como
us-central1
.- Pode adicionar a flag
--zone=ZONE
opcional para especificar uma zona na região especificada, comous-central1-a
. Se não especificar uma zona, a funcionalidade de posicionamento automático de zonas do Dataproc seleciona uma zona com a região especificada.
- Pode adicionar a flag
- IMAGE: As melhorias de desempenho de execução e do otimizador do Spark do Dataproc estão disponíveis nas versões de imagem do Dataproc
2.0.69+
e2.1.17+
e lançamentos posteriores. Se omitir esta flag, o Dataproc seleciona a versão subminor mais recente da imagem predefinida do Dataproc no Compute Engine para o cluster (consulte Versão da imagem predefinida do Dataproc). PROPERTIES:
- Para ativar os melhoramentos de otimização do Spark, especifique:
spark:spark.dataproc.enhanced.optimizer.enabled=true
- Para ativar os melhoramentos da execução do Spark, especifique:
spark:spark.dataproc.enhanced.execution.enabled=true
- Para ativar a otimização e as melhorias de execução do Spark, especifique:
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
Especifique o seguinte
SoftwareConfig.properties
como parte de um pedidoclusters.create
:- Para ativar os melhoramentos de otimização do Spark, especifique:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"
- Para ativar os melhoramentos da execução do Spark, especifique:
"spark:spark.dataproc.enhanced.execution.enabled": "true"
- Para ativar as melhorias de otimização e execução do Spark, especifique:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
Ative ou desative melhoramentos no envio de tarefas
Pode usar a Google Cloud consola, a CLI do Google Cloud e a API Dataproc para ativar ou desativar as melhorias de desempenho do Spark numa tarefa do Spark enviada para o serviço Dataproc.
Consola
- Na Google Cloud consola, abra a página Dataproc Tarefas.
- Na página Tarefas, clique em Enviar tarefa e, de seguida, desloque a página até à secção Propriedades.
- Para ativar os melhoramentos de otimização do Spark:
- Clique em + ADICIONAR PROPRIEDADES. Adicione "spark.dataproc.enhanced.optimizer.enabled" no campo Chave e "true" no campo Valor.
- Para ativar os melhoramentos de execução do Spark:
- Clique em + ADICIONAR PROPRIEDADES.
- Adicione "spark.dataproc.enhanced.execution.enabled" no campo Chave e "true" no campo Valor.
- Para ativar os melhoramentos de otimização do Spark:
- Preencha ou confirme os outros campos de envio de tarefas e, de seguida, clique em Enviar.
gcloud
Execute o seguinte comando gcloud dataproc jobs submit localmente numa janela de terminal ou no Cloud Shell.
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
Notas:
- SPARK_JOB_TYPE: especifique
spark
,pyspark
,spark-sql
ouspark-r
. - CLUSTER_NAME: o nome da tarefa onde a tarefa vai ser executada.
- REGION: a região onde o cluster está localizado.
PROPERTIES:
- Para ativar os melhoramentos de otimização do Spark, especifique:
spark.dataproc.enhanced.optimizer.enabled=true
- Para ativar os melhoramentos da execução do Spark, especifique:
spark.dataproc.enhanced.execution.enabled=true
- Para ativar a otimização e as melhorias de execução do Spark, especifique:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE: especifique
API
Especifique o seguinte
properties
para um SparkJob, PySparkJob, SparkSqlJob ou SparkRJob como parte de um pedidojobs.submit
:- Para ativar os melhoramentos de otimização do Spark, especifique:
"spark.dataproc.enhanced.optimizer.enabled=true"
- Para ativar os melhoramentos da execução do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true"
- Para ativar a otimização e as melhorias de execução do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"