Este documento descreve as propriedades do Spark e como defini-las. O Serverless para Apache Spark usa propriedades do Spark para determinar os recursos de computação, memória e disco a serem alocados para a 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 Serverless para Apache Spark e Preços do Serverless para Apache Spark.
Definir propriedades de carga de trabalho em lote do Spark
É possível especificar as propriedades do Spark ao enviar uma carga de trabalho em lote do Serverless para Apache Spark usando o Google Cloud console, a CLI gcloud ou a API Dataproc.
Console
No Google Cloud console, acesse a página Criar lote do Dataproc.
Na seção Propriedades, clique em Adicionar propriedade.
Insira o
Key(nome) e oValuede uma propriedade do Spark compatível.
gcloud
Exemplo de envio de lote da CLI gcloud:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Defina RuntimeConfig.properties com propriedades do Spark compatíveis como parte de uma batches.create.
Propriedades do Spark compatíveis
O Serverless para Apache Spark oferece suporte à maioria das propriedades do Spark, mas ele
não oferece suporte a 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 shuffle, o aplicativo vai falhar.
Propriedades do ambiente de execução
O Serverless para Apache Spark oferece suporte às 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, standard ou premium (consulte Google Cloud Níveis do Serverless para Apache Spark). As sessões interativas
sempre são executadas no dataproc.tier premium.
|
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 Serverless para Apache Spark oferece suporte às 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"). A memória total do driver por núcleo, incluindo a sobrecarga de memória do driver,
que precisa estar entre |
512m, 2g |
|
spark.driver.memoryOverhead |
A quantidade de memória JVM adicional 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"). Essa é uma memória não heap associada a sobrecargas da JVM,
strings internas e outras sobrecargas nativas, e inclui
a memória usada por outros processos de driver, como processos de driver do PySpark
e memória usada por outros processos não driver em execução no contêiner.
O tamanho máximo da memória do contêiner em que o driver é executado é
determinado pela soma de A memória total do driver por núcleo, 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 são definidas como 40% da memória do driver | 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. | padrão | padrão, premium |
spark.dataproc.driver.disk.size |
A quantidade de espaço em disco alocado para o driver,
especificado com um sufixo de unidade de tamanho ("k", "m", "g" ou "t").
Precisa ser pelo menos 250GiB.
Se o nível de disco premium for 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 shuffle no driver.
O nível de disco premium oferece melhor desempenho em IOPS e capacidade, 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 alocará mais 50 GiB de espaço em disco para armazenamento do sistema, que não pode ser usado por aplicativos do usuário. |
padrão | 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 do 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, incluindo a sobrecarga de memória do executor, precisa estar entre |
512m, 2g |
|
spark.executor.memoryOverhead |
A quantidade de memória JVM adicional a ser alocada para o processo do executor do Spark especificada no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). Essa é uma memória não heap usada para sobrecargas da JVM, strings internas,
e outras sobrecargas nativas, e inclui 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 da memória do contêiner em que o executor é executado é
determinado pela soma de A memória total do executor por núcleo, 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 são definidas como 40% da memória do executor | 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. | padrão | padrão, premium |
spark.dataproc.executor.disk.size |
A quantidade de espaço em disco alocado para cada executor,
especificado 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 shuffle e para preparar
dependências. Precisa ser pelo menos 250GiB.
Se o nível de disco premium for 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 shuffle em executores.
O nível de disco premium oferece melhor desempenho em IOPS e capacidade, mas
é cobrado a uma taxa mais alta. Se o nível de disco premium for 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. |
padrão | 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 Propriedades de alocação dinâmica do Spark para uma lista de propriedades do Spark que podem ser usadas para configurar o escalonamento automático do Serverless para Apache Spark.
Propriedades de registro
| Propriedade | Descrição | Padrão | Exemplos |
|---|---|---|---|
spark.log.level |
Quando definido, substitui todas as configurações de registro definidas pelo usuário com o 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 definido, substitui todas as configurações de registro definidas pelo usuário
com o 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 shuffle ao programar, o que pode reduzir longos tempos de espera de busca de shuffle causados pela distorção de gravação de shuffle. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Número mínimo de tarefas de mapa de shuffle concluídas em um executor a serem tratadas 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 de executores totais 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 médias de mapa de shuffle concluídas em um executor a serem tratadas como distorção. | 1.5 | 2.0 |
Outras propriedades
| Propriedade | Descrição |
|---|---|
dataproc.diagnostics.enabled |
Ative essa propriedade para executar diagnósticos em uma falha ou cancelamento de carga de trabalho em lote. Se os diagnósticos estiverem ativados, a carga de trabalho em lote continuará usando recursos de computação após a conclusão da carga de trabalho até que os diagnósticos sejam concluídos. Um URI que aponta para o local do arquivo tar de diagnóstico é listado no Batch.RuntimeInfo.diagnosticOutputUri campo da API. |
dataproc.gcsConnector.version |
Use essa propriedade para fazer upgrade para uma versão do conector do Cloud Storage diferente da versão instalada com a carga de trabalho em lote versão do ambiente de execução. |
dataproc.sparkBqConnector.version |
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 Serverless para Apache Spark). |
dataproc.profiling.enabled |
Defina essa propriedade como true para ativar a criação de perfil para a
carga de trabalho do Serverless para Apache Spark. |
dataproc.profiling.name |
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 de jars separados por vírgulas a serem incluídos nos caminhos de classe do driver e do executor. |
spark.archives |
Use essa propriedade para definir a lista de arquivos separados por vírgulas 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/modelo interativo. |
dataproc.artifacts.remove |
Use essa propriedade para remover artefatos padrão instalados em
ambientes de execução do Serverless para Apache Spark.
Os artefatos compatíveis são spark-bigquery-connector,
iceberg, e delta-lake. |