Este documento mostra como ativar as melhorias de desempenho do Spark do Dataproc para ajudar os jobs do Spark do Dataproc a processar mais dados em menos tempo e com custos reduzidos.
As melhorias de desempenho do Spark do Dataproc incluem:
- Melhorias do otimizador do Spark:
- Regras do otimizador escritas para planos melhores do Spark
- Melhor desempenho do conector do Dataproc BigQuery quando usado em jobs do Spark
- Melhorias de execução do Spark:
- Melhorias no mecanismo de execução do Spark
Outras melhorias de desempenho do Dataproc:consulte o Dataproc armazenamento em cache do cluster, que ajuda a reduzir o tempo gasto no acesso a dados no Cloud Storage.
É possível ativar as melhorias de desempenho do Spark em um cluster ou em um job do Spark:
As melhorias de desempenho do Spark ativadas em um cluster são aplicadas, por padrão, a todos os jobs do Spark executados no cluster, sejam enviados ao serviço do Dataproc ou diretamente ao cluster.
As melhorias de desempenho do Spark também podem ser ativadas ou desativadas em um job enviado ao serviço do Dataproc. As configurações de melhorias de desempenho do Spark aplicadas a um job substituem todas as configurações conflitantes definidas no nível do cluster apenas para o job especificado.
Preços
As melhorias de desempenho do Spark não geram cobranças adicionais. Os preços padrão do Dataproc no Compute Engine são aplicados.
Considerações
As melhorias de desempenho do Spark ajustam as propriedades do Spark, incluindo as seguintes propriedades:
spark.sql.shuffle.partitions: as melhorias de desempenho do Spark definem essa propriedade como1000para clusters da versão de imagem2.2. Essa configuração pode deixar jobs pequenos mais lentos.spark.dataproc.sql.catalog.file.index.stats.enabled: Essa configuração pode resultar em condições de OOM (sem memória) do driver se a contagem de partições do Hive for alta. Desativar essa propriedade pode corrigir a condição de OOM.
Ativar melhorias na criação do cluster
É possível usar o Google Cloud console, a Google Cloud CLI e a API do Dataproc para ativar as melhorias de desempenho do Spark do Dataproc ao criar um cluster do Dataproc com versões de imagem 2.0.69+, 2.1.17+, 2.2.0+ e versões de imagem mais recentes.
Console
- No Google Cloud console do, abra a página Criar um cluster do Dataproc.
- No formulário Criar cluster do Dataproc, clique em Criar na linha Cluster no Compute Engine.
- 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.
- Para ativar as melhorias de otimização do Spark:
- Clique em + ADICIONAR PROPRIEDADES.
- Selecione spark na lista Prefixo e adicione "spark.dataproc.enhanced.optimizer.enabled" no campo Chave e "true" no campo Valor.
- Para ativar as melhorias de execução do Spark:
- Clique em + ADICIONAR PROPRIEDADES.
- Selecione spark na lista Prefixo e adicione "spark.dataproc.enhanced.execution.enabled" no campo Chave e "true" no campo Valor.
- Para ativar as melhorias de otimização do Spark:
- Preencha ou confirme os outros campos de criação do cluster e, em seguida, clique em Criar.
gcloud
Execute o seguinte comando gcloud dataproc clusters create localmente em uma janela de 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 um 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 será localizado, como
us-central1.- É possível adicionar a flag opcional
--zone=ZONEpara especificar uma zona na região especificada, comous-central1-a. Se você não especificar uma zona, o recurso de posicionamento automático do Dataproc selecionará uma zona com a região especificada.
- É possível adicionar a flag opcional
- IMAGE: as melhorias de desempenho do otimizador e da execução do Spark do Dataproc estão disponíveis nas versões de imagem
2.0.69+e2.1.17+e em versões mais recentes. Se você omitir essa flag, o Dataproc vai selecionar a versão submenor 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:
spark:spark.dataproc.enhanced.optimizer.enabled=true- Para ativar as melhorias de 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
API
Especifique o seguinte
SoftwareConfig.propertiescomo parte de uma solicitaçãoclusters.create:- Para ativar as melhorias de otimização do Spark, especifique:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"- Para ativar as melhorias de 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"
Ativar ou desativar melhorias no envio de jobs
É possível usar o Google Cloud console, a Google Cloud CLI e a API do Dataproc para ativar ou desativar as melhorias de desempenho do Spark em um job do Spark enviado ao serviço do Dataproc.
Console
- No Google Cloud console do, abra a página Jobs do Dataproc.
- Na página Jobs, clique em Enviar job e role até a seção
Propriedades do job.
- Para ativar as melhorias 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 as melhorias 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 as melhorias de otimização do Spark:
- Preencha ou confirme os outros campos de envio de jobs e, em seguida, clique em Enviar.
gcloud
Execute o seguinte comando gcloud dataproc jobs submit localmente em uma janela de 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-sqlouspark-r. - CLUSTER_NAME: o nome do job em que o job será executado.
- REGION: a região em que o cluster está localizado.
PROPERTIES:
- Para ativar as melhorias de otimização do Spark, especifique:
spark.dataproc.enhanced.optimizer.enabled=true- Para ativar as melhorias de execução do Spark, especifique:
spark.dataproc.enhanced.execution.enabled=true- Para ativar as melhorias de otimização e execução do Spark, especifique:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE: especifique
API
Especifique os seguintes
propertiespara um SparkJob, PySparkJob, SparkSqlJob, ou SparkRJob como parte de umajobs.submitsolicitação:- Para ativar as melhorias de otimização do Spark, especifique:
"spark.dataproc.enhanced.optimizer.enabled=true"- Para ativar as melhorias de execução do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true"- Para ativar as melhorias de otimização e execução do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"