Este documento descreve as propriedades do Spark e como configurá-las. O Dataproc sem servidor usa propriedades do Spark para determinar os recursos de computação, memória e disco a serem alocados à carga de trabalho em lote. Essas configurações da propriedade podem afetar o consumo e o custo da cota de carga de trabalho. Para mais informações, consulte Cotas do Dataproc sem servidor e Preços do Dataproc sem servidor.
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 Dataproc Serverless Spark usando o console do Google Cloud, a CLI gcloud ou a API Dataproc.
Console
No console do Google Cloud, acesse a página Criar lote do Dataproc.
Na seção Propriedades, clique em Adicionar propriedade.
Insira o
Key
(nome) e oValue
de uma propriedade do Spark com suporte.
gcloud
Exemplo de envio em lote da CLI gcloud:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Defina RuntimeConfig.properties com as propriedades do Spark com suporte como parte de uma solicitação batches.create.
Propriedades do Spark com suporte
O Dataproc Serverless para Spark oferece suporte à maioria das propriedades do Spark, mas não
oferece suporte a propriedades do Spark 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 Dataproc Serverless para Spark oferece suporte às seguintes propriedades personalizadas do Spark para configurar o ambiente de execução:
Propriedade | Descrição |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
Adicione o EnvironmentVariableName ao processo do driver. É possível especificar várias variáveis de ambiente. |
Propriedades de alocação de recursos
O Dataproc Serverless para 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"). 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 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 é a 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 os processos de driver do PySpark
e a memória usada por outros processos que não são de 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 do 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 têm o padrão de 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 melhor 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 sã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 em 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 vai alocar 50 GiB adicionais de espaço em disco para armazenamento do sistema, que não é utilizável pelos 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 de 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 JVM adicional a ser alocada para o processo de 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 é a memória não heap usada para overheads da JVM, strings internas
e outros overheads nativos, e inclui a memória do executor do PySpark e
a memória usada por outros processos que não sã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 têm o padrão de 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 melhor 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
estágios de 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, 1.500g, 3.000g, 6.000g ou 9.000g. 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 embaralhar 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 terá 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 Propriedades de alocação dinâmica do Spark para conferir uma lista de propriedades do Spark que podem ser usadas para configurar o escalonamento automático do Dataproc sem servidor.
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 executores de mapa de ordenação aleatória com distorção ao programar, o que pode reduzir tempos de espera de busca de ordenação aleatória longos causados por distorção de gravação de ordenação aleatória. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Número mínimo de tarefas de mapa de shuffle concluídas em um executor para tratamento como distorção. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Número máximo de executores a serem tratados como distorcidos. Executores distorcidos são excluídos da rodada de programação atual. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Razão máxima de executores totais para tratar como distorção. 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 shuffle 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 |
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 concluído. Um URI que aponta para o local do tarball de diagnóstico é listado no campo da API Batch.RuntimeInfo.diagnosticOutputUri. |
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 versão do ambiente de execução da sua carga de trabalho em lote. |
dataproc.sparkBqConnector.version |
Use essa propriedade para fazer upgrade para uma versão do conector do BigQuery do Spark diferente da versão instalada com a versão de execução da sua carga de trabalho em lote. Consulte Usar o conector do BigQuery com o Dataproc sem servidor para Spark. |
dataproc.profiling.enabled |
Defina essa propriedade como true para ativar o perfil da carga de trabalho do Dataproc sem servidor. |
dataproc.profiling.name |
Use essa propriedade para definir o nome usado para criar um perfil no serviço Profiler. |