Neste documento, descrevemos as propriedades do Spark e como defini-las. O Serviço Gerenciado para Apache Spark usa propriedades do Spark para determinar os recursos de computação, memória e disco que serão alocados para sua carga de trabalho em lote. Essas configurações de propriedade podem afetar o consumo e o custo da cota de carga de trabalho. Para mais informações, consulte Cotas do Serviço Gerenciado para Apache Spark e Preços do Serviço Gerenciado para Apache Spark.
Definir propriedades de carga de trabalho em lote do Spark
É possível especificar propriedades do Spark ao enviar uma carga de trabalho em lote do Serviço Gerenciado para Apache Spark usando o console do Google Cloud , CLI gcloud ou a API Dataproc.
Console
No console do Google Cloud , acesse a página Criar lote do Serviço Gerenciado para Apache Spark.
Na seção Propriedades, clique em Adicionar propriedade.
Insira o
Key(nome) e oValuede uma propriedade do Spark compatível.
gcloud
Veja a seguir um exemplo de envio em lote da CLI gcloud. Várias propriedades são separadas por vírgulas.
gcloud dataproc batches submit spark \ --properties=spark.checkpoint.compress=true,spark.driver.cores=8 \ --region=REGION \ other args ...
API
Defina RuntimeConfig.properties com propriedades do Spark compatíveis como parte de uma solicitação batches.create.
Propriedades do Spark compatíveis
O Serviço Gerenciado para Apache Spark é compatível com a maioria das propriedades do Spark, mas não com as propriedades relacionadas ao YARN e ao shuffle, como spark.master=yarn e spark.shuffle.service.enabled. Se o código do aplicativo Spark definir uma propriedade YARN ou de embaralhamento, o aplicativo vai falhar.
Propriedades do ambiente de execução
O Serviço Gerenciado para Apache Spark é compatível com as seguintes propriedades personalizadas do Spark para configurar o ambiente de execução:
| Propriedade | Descrição |
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
Adicione ENVIRONMENT_VARIABLE_NAME ao processo do driver. É possível especificar várias variáveis de ambiente. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
Adicione ENVIRONMENT_VARIABLE_NAME ao processo do executor. É possível especificar várias variáveis de ambiente. |
Propriedade de nível
| Propriedade | Descrição | Padrão |
|---|---|---|
dataproc.tier |
O nível em que uma carga de trabalho em lote é executada, seja standard ou premium (consulte Níveis do Serviço Gerenciado para Apache Spark). As sessões interativas sempre são executadas no nível Premium dataproc.tier.
|
standard |
Propriedades do mecanismo e do ambiente de execução
| Propriedade | Descrição | Padrão |
|---|---|---|
spark.dataproc.engine |
O mecanismo a ser usado para executar a carga de trabalho em lote ou a sessão interativa: lightningEngine
(consulte Lightning Engine) ou o mecanismo default.
|
|
spark.dataproc.lightningEngine.runtime |
O ambiente de execução a ser usado quando o Lightning Engine é selecionado para uma carga de trabalho em lote ou sessão interativa: default ou native (execução de consulta nativa).
|
default |
Propriedades de alocação de recursos
O Serviço Gerenciado para Apache Spark é compatível com as seguintes propriedades do Spark para configurar a alocação de recursos:
| Propriedade | Descrição | Padrão | Exemplos |
|---|---|---|---|
spark.driver.cores |
O número de núcleos (vCPUs) a serem alocados para o driver do Spark.
Valores válidos: 4, 8, 16. |
4 |
|
spark.driver.memory |
A quantidade de memória a ser alocada para o processo do driver do Spark, especificada no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). Memória total do driver por núcleo do driver, incluindo a sobrecarga de memória do driver,
que precisa estar entre |
512m, 2g |
|
spark.driver.memoryOverhead |
A quantidade de memória adicional da JVM a ser alocada para o processo do driver do Spark, especificada no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). É a memória não heap associada a sobrecargas da JVM,
strings internas e outras sobrecargas nativas, incluindo
a memória usada por outros processos de driver, como os do PySpark, e a memória usada por outros processos não relacionados ao driver em execução no contêiner.
O tamanho máximo de memória do contêiner em que o driver é executado é
determinado pela soma de A memória total do driver por núcleo de driver, incluindo a sobrecarga de memória do driver,
precisa estar entre |
10% da memória do driver, exceto para cargas de trabalho em lote do PySpark, que usam 40% da memória do driver por padrão | 512m, 2g |
spark.dataproc.driver.compute.tier |
O nível de computação a ser usado no driver. O nível de computação Premium oferece maior desempenho por núcleo, mas é cobrado a uma taxa mais alta. | standard | padrão, premium |
spark.dataproc.driver.disk.size |
A quantidade de espaço em disco alocada para o driver,
especificada com um sufixo de unidade de tamanho ("k", "m", "g" ou "t").
Precisa ser pelo menos 250GiB.
Se o nível de disco Premium estiver selecionado no driver, os tamanhos válidos serão
375g, 750g, 1500g, 3000g, 6000g ou 9000g. Se o nível de disco Premium
e 16 núcleos de driver forem selecionados,
o tamanho mínimo do disco será de 750g. |
100GiB por núcleo |
1024g, 2t |
spark.dataproc.driver.disk.tier |
O nível de disco a ser usado para armazenamento local e de embaralhamento no driver.
O nível de disco Premium oferece melhor desempenho em IOPS e capacidade de processamento, mas
é cobrado a uma taxa mais alta. Se o nível de disco Premium for selecionado no
driver, o nível de computação Premium também precisará ser selecionado usando
spark.dataproc.driver.compute.tier=premium,
e a quantidade de espaço em disco precisará ser especificada usando
spark.dataproc.executor.disk.size.
Se o nível de disco Premium for selecionado, o driver vai alocar mais 50 GiB de espaço em disco para o armazenamento do sistema, que não pode ser usado por aplicativos do usuário. |
standard | padrão, premium |
spark.executor.cores |
O número de núcleos (vCPUs) a serem alocados para cada executor do Spark.
Valores válidos: 4, 8, 16. |
4 |
|
spark.executor.memory |
A quantidade de memória a ser alocada para cada processo executor do Spark, especificada no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). A memória total do executor por núcleo do executor, incluindo a sobrecarga de memória do executor, precisa estar entre |
512m, 2g |
|
spark.executor.memoryOverhead |
A quantidade de memória extra da JVM a ser alocada para o processo executor do Spark, especificada no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). É a memória não heap usada para sobrecargas da JVM, strings internas
e outras sobrecargas nativas, incluindo a memória do executor do PySpark e
a memória usada por outros processos não executores em execução no contêiner.
O tamanho máximo de memória do contêiner em que o executor é executado é
determinado pela soma de A memória total do executor por núcleo do executor, incluindo a sobrecarga de memória do executor, precisa estar entre |
10% da memória do executor, exceto para cargas de trabalho em lote do PySpark, que usam 40% da memória do executor por padrão | 512m, 2g |
spark.dataproc.executor.compute.tier |
O nível de computação a ser usado nos executores. O nível de computação Premium oferece maior desempenho por núcleo, mas é cobrado a uma taxa mais alta. | standard | padrão, premium |
spark.dataproc.executor.disk.size |
A quantidade de espaço em disco alocada para cada executor,
especificada com um sufixo de unidade de tamanho ("k", "m", "g" ou "t").
O espaço em disco do executor pode ser usado para dados de embaralhamento e para preparar
dependências. Precisa ser pelo menos 250GiB.
Se o nível de disco Premium estiver selecionado no executor, os tamanhos válidos serão
375g, 750g, 1500g, 3000g, 6000g ou 9000g. Se o nível de disco Premium
e 16 núcleos de executor forem selecionados,
o tamanho mínimo do disco será de 750g. |
100GiB por núcleo |
1024g, 2t |
spark.dataproc.executor.disk.tier |
O nível de disco a ser usado para armazenamento local e de embaralhamento em executores.
O nível de disco Premium oferece melhor desempenho em IOPS e capacidade de processamento, mas
é cobrado a uma taxa mais alta. Se o nível de disco Premium estiver selecionado no executor, o nível de computação Premium também precisará ser selecionado usando spark.dataproc.executor.compute.tier=premium, e a quantidade de espaço em disco precisará ser especificada usando spark.dataproc.executor.disk.size.
Se o nível de disco Premium for selecionado, cada executor receberá mais 50 GiB de espaço em disco para armazenamento do sistema, que não pode ser usado por aplicativos do usuário. |
standard | padrão, premium |
spark.executor.instances |
O número inicial de executores a serem alocados. Depois que uma carga de trabalho em lote
é iniciada, o escalonamento automático pode mudar o número de executores ativos. Precisa ser
pelo menos 2 e no máximo 2000. |
Propriedades do escalonamento automático
Consulte as propriedades de alocação dinâmica do Spark para ver uma lista de propriedades do Spark que podem ser usadas para configurar o escalonamento automático do Serviço Gerenciado para Apache Spark.
Propriedades de registro
| Propriedade | Descrição | Padrão | Exemplos |
|---|---|---|---|
spark.log.level |
Quando definida, substitui as configurações de registro definidas pelo usuário pelo efeito de
uma chamada para SparkContext.setLogLevel() na inicialização do Spark. Os níveis de registro válidos incluem: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE e WARN. |
INFO, DEBUG |
|
spark.executor.syncLogLevel.enabled |
Quando definido como true, o nível de registro aplicado pelo
método SparkContext.setLogLevel() é
propagado para todos os executores. |
false |
true, false |
spark.log.level.PackageName |
Quando definida, substitui as configurações de registro definidas pelo usuário
pelo efeito de uma chamada para SparkContext.setLogLevel(PackageName, level)
na inicialização do Spark. Os níveis de registro válidos incluem: ALL, DEBUG,
ERROR, FATAL, INFO, OFF,
TRACE e WARN. |
spark.log.level.org.apache.spark=error |
Propriedades de programação
| Propriedade | Descrição | Padrão | Exemplos |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Exclua os executores distorcidos do mapa de embaralhamento ao programar, o que pode reduzir os longos tempos de espera de busca de embaralhamento causados pela distorção de gravação de embaralhamento. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Número mínimo de tarefas de mapa de embaralhamento concluídas em um executor para tratar como distorção. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Número máximo de executores a serem tratados como distorção. Os executores distorcidos são excluídos da rodada de programação atual. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Proporção máxima do total de executores a serem tratados como distorção. Os executores distorcidos são excluídos da programação. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Um múltiplo das tarefas de mapa de embaralhamento concluídas em média em um executor para tratar como distorção. | 1.5 | 2.0 |
Outras propriedades
| Propriedade | Descrição |
|---|---|
dataproc.diagnostics.enabled |
**Compatível apenas com os ambientes de execução 2.3 e anteriores**. Ative essa propriedade para executar diagnósticos em uma falha ou cancelamento de carga de trabalho em lote. Se o diagnóstico estiver ativado, a carga de trabalho em lote vai continuar usando recursos de computação depois que a carga de trabalho for concluída até que o diagnóstico seja finalizado. Um URI que aponta para o local do arquivo tar de diagnóstico é listado no campo da API Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
**Compatível apenas com os ambientes de execução 2.3 e anteriores**. Use essa propriedade para fazer upgrade para uma versão do conector do Cloud Storage diferente da versão instalada com a versão do ambiente de execução da carga de trabalho em lote. |
dataproc.sparkBqConnector.version |
**Compatível apenas com os ambientes de execução 2.3 e anteriores**. Use essa propriedade para fazer upgrade para uma versão do conector do Spark BigQuery diferente da versão instalada com a versão do ambiente de execução da carga de trabalho em lote (consulte Usar o conector do BigQuery com o Serviço Gerenciado para Apache Spark). |
dataproc.profiling.enabled |
**Compatível apenas com os ambientes de execução 2.3 e anteriores**. Defina essa propriedade como true para ativar a criação de perfil para a
carga de trabalho do Serviço Gerenciado para Apache Spark. |
dataproc.profiling.name |
**Compatível apenas com os ambientes de execução 2.3 e anteriores.** Use essa propriedade para definir o nome usado para criar um perfil no serviço Profiler. |
spark.jars |
Use essa propriedade para definir a lista separada por vírgulas de JARs a serem incluídos nos caminhos de classe do driver e do executor. |
spark.archives |
Use essa propriedade para definir a lista separada por vírgulas de arquivos a serem extraídos para o diretório de trabalho de cada executor. Os formatos .jar, .tar.gz, .tgz e .zip são aceitos. Para sessões interativas sem servidor, adicione essa propriedade ao criar uma sessão interativa ou um perfil de ambiente de execução (modelo de sessão). |
dataproc.artifacts.remove |
Use essa propriedade para remover artefatos padrão instalados em
ambientes de execução do Serviço Gerenciado para Apache Spark.
Os artefatos compatíveis são conscrypt, delta-lake, iceberg, rapids e spark-bigquery-connector. |