Este documento mostra como ativar as melhorias de performance do Spark no serviço gerenciado para Apache Spark para ajudar os jobs do Spark a processar mais dados em menos tempo e com custos reduzidos.
As melhorias de performance do Managed Service for Apache Spark incluem:
- Melhorias no otimizador do Spark:
- Regras do otimizador escritas para planos do Spark melhores
- Melhoria na performance do conector do BigQuery do Managed Service for 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 performance do Managed Service for Apache Spark:consulte o armazenamento em cache de clusters do Managed Service for 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 Managed Service para Apache Spark ou enviados diretamente ao cluster.
As melhorias de performance do Spark também podem ser ativadas ou desativadas em um job enviado ao Managed Service for 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 padrão do Managed Service for Apache Spark são aplicáveis.
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 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 falta de memória.
Ativar melhorias na criação do cluster
É possível usar o Google Cloud console, a Google Cloud CLI e a API do serviço gerenciado para Apache Spark para ativar as melhorias de desempenho do Spark 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 versões de imagem posteriores.
Console
- No console do Google Cloud , abra a página do serviço gerenciado para Apache Spark Criar um cluster.
- No formulário Criar cluster do serviço gerenciado para Apache Spark, clique em Criar na linha Cluster.
- Na página Criar um cluster do Managed Service for Apache Spark,
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 na 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 de cluster e clique em Criar.
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 hífens. 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 vai estar 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 Managed Service for 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 do otimizador do Spark do Managed Service for Apache Spark estão disponíveis nas versões de imagem
2.0.69+e2.1.17+do Managed Service for Apache Spark e em versões mais recentes. Se você omitir essa flag, o Managed Service for Apache Spark vai selecionar a versão subprincipal mais recente da versão de imagem padrão do Managed Service for Apache Spark para o cluster (consulte Versão padrão da imagem do Managed Service for 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 do serviço gerenciado para Apache Spark 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 do Google Cloud , abra a página Jobs do Managed Service for Apache Spark.
- 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"