O Dataproc sem servidor usa propriedades do Spark para determinar os recursos de computação, memória e disco para alocar à carga de trabalho em lote. Essas configurações de propriedade podem afetar o consumo e o custo da cota de carga de trabalho. Consulte Cotas do Dataproc sem servidor e Preços do Dataproc sem servidor para mais informações.
Definir propriedades de carga de trabalho em lote do Spark
É possível especificar propriedades do Spark quando enviar uma carga de trabalho em lote Spark do Dataproc sem servidor usando o console do Google Cloud, CLI gcloud ou a API Dataproc.
Console
Acesse a página "Criar lote do Dataproc" no console do Google Cloud.
Na seção Propriedades, clique em Adicionar propriedade e insira o
Key
(nome) eValue
de um propriedade do Spark compatível.
gcloud
Exemplo de envio em lote da CLI gcloud:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Definir RuntimeConfig.properties com propriedades do Spark compatíveis como parte de uma batches.create solicitação.
Propriedades do Spark com suporte
O Dataproc sem servidor para Spark dá suporte à maioria das propriedades do Spark, mas
não oferece suporte a propriedades do Spark relacionadas a YARN e embaralhamento, como
spark.master=yarn
e spark.shuffle.service.enabled
. Se o aplicativo Spark
código define uma propriedade YARN ou de embaralhamento, o aplicativo falhará.
Propriedades do ambiente de execução
O Dataproc sem servidor 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. Você pode especificar diversas 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. especificado 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 sobrecarga de memória,
que precisa estar entre |
512m , 2g |
|
spark.driver.memoryOverhead |
A quantidade de memória adicional da JVM a ser alocada para o driver do Spark processo, especificado 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 overhead da JVM,
strings internas e outras sobrecargas nativas, e inclui
memória usada por outros processos do driver, como processos de driver do PySpark
e a memória usada por outros processos que não sejam do 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 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
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
375 g, 750 g, 1.500 g, 3.000 g, 6.000 g ou 9.000 g. |
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, mas
é cobrado a uma taxa mais alta. Se o nível de disco Premium for selecionado
para o driver, o nível de computação Premium também deve ser selecionado usando
spark.dataproc.driver.compute.tier=premium ,
e a quantidade de espaço em disco deve 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 do executor do Spark. especificado no formato de string de memória da JVM com um sufixo de unidade de tamanho ("m", "g" ou "t"). Memória total do executor por núcleo, incluindo memória do executor
sobrecarga, precisa ser entre |
512m , 2g |
|
spark.executor.memoryOverhead |
A quantidade de memória adicional da JVM a ser alocada para o Spark processo do executor, especificado no formato de string de memória da JVM com uma unidade de tamanho sufixo ("m", "g" ou "t"). Essa é uma memória não heap usada para overhead de JVM, strings internas
e outras sobrecargas nativas, além de incluir a memória do executor do PySpark e
memória usada por outros processos sem executor 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 Memória total do executor por núcleo, incluindo memória do executor
sobrecarga, precisa ser entre |
10% da memória do executor, exceto para cargas de trabalho em lote do PySpark, que tem como padrão 40% da memória do executor | 512m , 2g |
spark.dataproc.executor.compute.tier |
O nível de computação que será usado nos executores. O nível de computação Premium oferece maior desempenho por núcleo, mas ela terá uma taxa mais alta. | standard | padrão, premium |
spark.dataproc.executor.disk.size |
A quantidade de espaço em disco alocada 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 embaralhar dados e 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
375 g, 750 g, 1.500 g, 3.000 g, 6.000 g ou 9.000 g. |
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 nos executores.
O nível de disco Premium oferece melhor desempenho em IOPS e capacidade, mas
ela terá uma taxa mais alta. Se o nível de disco Premium for selecionado
executor, o nível de computação Premium também precisa ser selecionado com
spark.dataproc.executor.compute.tier=premium ,
e a quantidade de espaço em disco deve ser especificada usando
spark.dataproc.executor.disk.size .
Se o nível de disco Premium for selecionado, cada executor será alocado mais 50 GiB de espaço em disco para armazenamento do sistema, utilizáveis pelos aplicativos do usuário. | standard | padrão, premium |
spark.executor.instances |
O número inicial de executores a serem alocados. Após uma carga de trabalho em lote
for iniciado, o escalonamento automático pode alterar o número de executores ativos. Deve ser
no mínimo 2 e no máximo 2000 . |
Propriedades do escalonamento automático
Consulte as propriedades de alocação dinâmica do Spark uma lista de propriedades do Spark que podem ser usadas para configurar Escalonamento automático sem servidor do Dataproc.
Propriedades de registro
Propriedade | Descrição | Padrão | Exemplos |
---|---|---|---|
spark.log.level |
Quando definido, substitui qualquer configuração de registro definida pelo usuário com o efeito da
Uma chamada para SparkContext.setLogLevel() na inicialização do Spark. Válida
os níveis de registro 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
o método SparkContext.setLogLevel() é
propagada para todos os executores. |
false |
true , false |
spark.log.level.PackageName |
Quando definido, substitui qualquer configuração de registro definida pelo usuário.
com o efeito de uma chamada para SparkContext.setLogLevel(PackageName, level)
na startup 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 distorcidos de mapa de embaralhamento ao programar, o que pode reduzir tempos de espera longos de busca de embaralhamento causados por desvio de gravação de embaralhamento. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Número mínimo de tarefas de mapa de ordem aleatória concluídas em um executor para tratar como desvio. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Número máximo de executores a serem tratados como desvio. 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 ser tratado como desvio. Executores distorcidos são excluídos da programação. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Um múltiplo da média das tarefas de embaralhamento concluídas no mapa executor a ser tratado como desvio. | 1.5 | 2.0 |
Outras propriedades
Propriedade | Descrição |
---|---|
dataproc.diagnostics.enabled |
Ative essa propriedade para executar diagnósticos em uma falha de carga de trabalho em lote ou cancelamento. Se os diagnósticos estiverem ativados, a carga de trabalho em lote continuará a usar recursos de computação a carga de trabalho 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 esta propriedade para fazer upgrade para um Versão do conector do Cloud Storage diferente da versão instalada com as cargas de trabalho versão do ambiente de execução. |
dataproc.sparkBqConnector.version |
Use esta propriedade para fazer upgrade para um Versão do conector do BigQuery do Spark diferente da versão instalada com as cargas de trabalho Versão do ambiente de execução (consulte Usar o conector do BigQuery com o Dataproc sem servidor para Spark). |
dataproc.profiling.enabled |
Defina esta propriedade como true para ativar a criação de perfil para o
Carga de trabalho do Dataproc sem servidor. |
dataproc.profiling.name |
Use essa propriedade para definir o nome usado para criar um perfil na Profiler. |