Este documento mostra como ativar as melhorias de performance do Spark no Serviço Gerenciado para Apache Spark para ajudar seus jobs a processar mais dados em menos tempo e com custos reduzidos.
As melhorias de performance do Serviço Gerenciado para Apache Spark incluem:
- Melhorias no otimizador do Spark:
- Regras do otimizador escritas para melhores planos do Spark
- Melhoria na performance do conector do BigQuery do Serviço Gerenciado para Apache Spark 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 Serviço Gerenciado para Apache Spark:consulte o armazenamento em cache de cluster do Serviço Gerenciado para Apache Spark, 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 eles enviados ao Serviço Gerenciado para Apache Spark ou enviados diretamente ao cluster.
As melhorias de desempenho do Spark também podem ser ativadas ou desativadas em um job enviado ao Serviço Gerenciado para Apache Spark. As configurações de melhorias de desempenho do Spark aplicadas a um job substituem as configurações conflitantes definidas no nível do cluster apenas para o job especificado.
Preços
As melhorias no desempenho do Spark não geram cobranças adicionais. Os preços do Serviço Gerenciado para Apache Spark se aplicam.
Considerações
As melhorias de desempenho do Spark ajustam as propriedades do Spark, incluindo as seguintes:
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 os jobs pequenos mais lentos.spark.dataproc.sql.catalog.file.index.stats.enabled: essa configuração pode resultar em condições de falta de memória (OOM, na sigla em inglês) do driver se a contagem de partições do Hive for alta. Desativar essa propriedade pode corrigir a condição de falta de memória.
Ativar melhorias na criação do cluster
É possível usar o console Google Cloud , a Google Cloud CLI e a API Dataproc para ativar as melhorias de desempenho do Serviço Gerenciado para Apache Spark ao criar um cluster do Serviço Gerenciado para Apache Spark com versões de imagem 2.0.69+, 2.1.17+, 2.2.0+ e lançamentos de imagem posteriores.
Console
- No console do Google Cloud , abra a página Criar cluster.
- Clique em Configuração adicional para abrir a seção.
- Edite Personalização e outros.
- Na seção Propriedades do cluster, adicione as seguintes propriedades:
- Para ativar as melhorias de otimização do Spark:
- Clique em + Adicionar propriedades.
- Selecione spark na lista Prefixo.
- Insira
spark.dataproc.enhanced.optimizer.enabledno campo Chave etrueno campo Valor.
- Para ativar as melhorias na execução do Spark:
- Clique em + Adicionar propriedades.
- Selecione spark na lista Prefixo.
- Insira
spark.dataproc.enhanced.execution.enabledno campo Chave etrueno campo Valor.
- Para ativar as melhorias de otimização do Spark:
- Preencha os outros campos do cluster e clique em Criar cluster.
gcloud
Execute localmente o seguinte comando gcloud dataproc clusters create 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. 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 dentro da região especificada, comous-central1-a. Se você não especificar uma zona, o recurso de posicionamento automático de zona do Serviço Gerenciado para Apache Spark vai selecionar uma zona com a região especificada.
- É possível adicionar a flag opcional
- IMAGE: as melhorias de desempenho de execução e otimização do Serviço Gerenciado para Apache Spark estão disponíveis nas versões de imagem
2.0.69+e2.1.17+do Serviço Gerenciado para Apache Spark e em versões mais recentes. Se você omitir essa flag, o Serviço Gerenciado para Apache Spark vai selecionar a versão subalterna mais recente da versão de imagem padrão do Serviço Gerenciado para Apache Spark para o cluster. Consulte Versão padrão da imagem do Serviço Gerenciado para Apache Spark. PROPERTIES:
- Para ativar as melhorias de otimização do Spark, especifique:
spark:spark.dataproc.enhanced.optimizer.enabled=true- Para ativar as melhorias na execução do Spark, especifique:
spark:spark.dataproc.enhanced.execution.enabled=true- Para ativar as melhorias de execução e otimizaçã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 na execução do Spark, especifique:
"spark:spark.dataproc.enhanced.execution.enabled": "true"- Para ativar as melhorias de execução e otimizaçã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 Dataproc para ativar ou desativar as melhorias de desempenho do Spark em um job do Spark enviado ao Serviço Gerenciado para Apache Spark.
Console
- No console Google Cloud , abra a página Jobs.
- Na página Jobs, clique em Enviar job e role a tela até a seção Propriedades.
- 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 na 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 job e 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 ele 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 na execução do Spark, especifique:
spark.dataproc.enhanced.execution.enabled=true- Para ativar as melhorias de execução e otimizaçã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 na execução do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true"- Para ativar as melhorias de execução e otimização do Spark, especifique:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"