Ottimizzazione automatica dei carichi di lavoro Spark

L'ottimizzazione di un carico di lavoro Spark per prestazioni e resilienza può essere difficile a causa il numero di opzioni di configurazione Spark e la difficoltà di valutarne il modo senza incidere su un carico di lavoro. L'ottimizzazione automatica serverless di Dataproc offre un'alternativa alla configurazione manuale dei carichi di lavoro applicando automaticamente le impostazioni di configurazione Spark a un carico di lavoro Spark ricorrente, in base alle best practice e alle delle esecuzioni dei carichi di lavoro.

Registrati per l'ottimizzazione automatica di Dataproc Serverless

Registrazione per l'accesso all'ottimizzazione automatica di Dataproc Serverless release di anteprima descritta in questa pagina, completare e inviare Gemini nell'anteprima di BigQuery modulo di iscrizione. Una volta approvato il modulo, i progetti elencati nel modulo avranno e l'accesso alle funzionalità in anteprima.

Vantaggi

L'ottimizzazione automatica di Dataproc Serverless può offrire i seguenti vantaggi:

  • Prestazioni migliorate: ottimizzazione per aumentare le prestazioni.
  • Ottimizzazione più rapida: configurazione automatica per evitare di dover dedicare tempo alle attività manuali test della configurazione
  • Maggiore resilienza: allocazione automatica della memoria per evitare problemi di memoria errori

Limitazioni

L'ottimizzazione automatica serverless di Dataproc ha le seguenti limitazioni:

  • L'ottimizzazione automatica viene calcolata e applicata alla seconda esecuzione e a quelle successive di un carico di lavoro. La prima esecuzione di un carico di lavoro ricorrente non viene ottimizzato automaticamente perché l'ottimizzazione automatica di Dataproc Serverless utilizza il carico di lavoro per l'ottimizzazione.
  • Il ridimensionamento della memoria non è supportato.
  • L'ottimizzazione automatica non viene applicata in modo retroattivo ai carichi di lavoro in esecuzione, ma solo di carico di lavoro inviate.

Coorti di ottimizzazione automatica

L'ottimizzazione automatica viene applicata alle esecuzioni ricorrenti di un carico di lavoro batch, chiamate coorti. Il nome della coorte specificato quando invii un carico di lavoro lo identifica come una delle esecuzioni successive del carico di lavoro ricorrente. Ti consigliamo di utilizzare nomi delle coorti che descrivono il tipo di carico di lavoro o che altrimenti aiutano a identificare le esecuzioni di un carico di lavoro come parte di un carico di lavoro ricorrente. Ad esempio, specifica daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.

Scenari di ottimizzazione automatica

Puoi applicare l'ottimizzazione automatica di Dataproc Serverless al carico di lavoro tramite selezionando uno o più dei seguenti scenari di ottimizzazione automatica:

  • MEMORY: ottimizza automaticamente l'allocazione della memoria Spark per prevedere ed evitare potenziali di esaurimento della memoria dei carichi di lavoro. Correggi un carico di lavoro non riuscito in precedenza a causa a un errore di esaurimento memoria (OOM).
  • SCALING: impostazioni di configurazione della scalabilità automatica di Spark con ottimizzazione automatica.
  • BROADCAST_HASH_JOIN: regolazione automatica delle impostazioni di configurazione di Spark per ottimizzare il join della trasmissione SQL delle prestazioni.

Prezzi

L'ottimizzazione automatica serverless di Dataproc viene offerta durante l'anteprima senza costi aggiuntivi. Standard Si applicano i prezzi di Dataproc Serverless.

Disponibilità a livello di area geografica

Puoi utilizzare l'ottimizzazione automatica di Dataproc Serverless con i batch inviati in regioni di Compute Engine disponibili.

Usa l'ottimizzazione automatica serverless di Dataproc

Puoi abilitare l'ottimizzazione automatica di Dataproc Serverless carico di lavoro utilizzando la console Google Cloud, Google Cloud CLI l'API Dataproc.

Console

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un carico di lavoro batch ricorrente, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Batch di Dataproc.

    Vai alla pagina Batch di Dataproc

  2. Per creare un carico di lavoro batch, fai clic su Crea.

  3. Nella sezione Contenitore, compila per il carico di lavoro Spark:

    • Coorte: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, specifica daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.

    • Scenari di ottimizzazione automatica: uno o più scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio BROADCAST_HASH_JOIN, MEMORY e SCALING. Puoi modificare la selezione dello scenario a ogni invio di coorte in batch.

  4. Compila le altre sezioni della pagina Crea batch in base alle tue esigenze, quindi fai clic su Invia. Per ulteriori informazioni su questi campi, consulta: Invia un carico di lavoro batch.

gcloud

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un carico di lavoro batch ricorrente, esegui questo gcloud CLI gcloud dataproc batches submit localmente in una finestra del terminale o Cloud Shell.

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    --autotuning-scenarios=SCENARIOS \
    other arguments ...

Sostituisci quanto segue:

  • COMMAND: il tipo di carico di lavoro Spark, ad esempio Spark, PySpark, Spark-Sql o Spark-R.
  • REGION: il valore regione in cui verrà eseguito il carico di lavoro.
  • COHORT: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, specifica daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.

  • SCENARIOS: una o più virgole separate scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio --autotuning-scenarios=MEMORY,SCALING. Puoi modificare l'elenco degli scenari a ogni invio di coorte in batch.

API

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un carico di lavoro batch ricorrente, inviare un file batches.create che includa i seguenti campi:

  • RuntimeConfig.cohort: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, specifica daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.
  • AutotuningConfig.scenarios: uno o più scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio BROADCAST_HASH_JOIN, MEMORY e SCALING. Puoi modificare l'elenco degli scenari a ogni invio di coorte in batch.

Esempio:

...
runtimeConfig:
  cohort: daily_sales_aggregation
  autotuningConfig:
    scenarios:
    - BROADCAST_HASH_JOIN
    - MEMORY
    - SCALING
...

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di Dataproc Serverless con librerie client. Per ulteriori informazioni, consulta API Dataproc Serverless Java documentazione di riferimento.

Per eseguire l'autenticazione su Dataproc Serverless, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un batch ricorrente carico di lavoro, chiama BatchControllerClient.createBatch con una richiesta CreateBatchRequest che include i seguenti campi:

  • Batch.RuntimeConfig.cohort: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, potresti specificare daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.
  • Batch.RuntimeConfig.AutotuningConfig.scenarios: uno o più scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio BROADCAST_HASH_JOIN, MEMORY e SCALING. Puoi modificare l'elenco degli scenari a ogni invio di coorte in batch. Per l'elenco completo degli scenari, consulta AutotuningConfig.Scenario Javadoc.

Esempio:

...
Batch batch =
  Batch.newBuilder()
    .setRuntimeConfig(
      RuntimeConfig.newBuilder()
        .setCohort("daily_sales_aggregation")
        .setAutotuningConfig(
          AutotuningConfig.newBuilder()
            .addScenarios(Scenario.SCALING))
    ...
  .build();

batchControllerClient.createBatch(
    CreateBatchRequest.newBuilder()
        .setParent(parent)
        .setBatchId(batchId)
        .setBatch(batch)
        .build());
...

Per utilizzare l'API, devi usare la google-cloud-dataproc libreria client versione 4.43.0 o in un secondo momento. Puoi utilizzare una delle seguenti configurazioni per aggiungere la libreria al tuo progetto.

Maven

<dependencies>
 <dependency>
   <groupId>com.google.cloud</groupId>
   <artifactId>google-cloud-dataproc</artifactId>
   <version>4.43.0</version>
 </dependency>
</dependencies>

Gradle

implementation 'com.google.cloud:google-cloud-dataproc:4.43.0'

SBT

libraryDependencies += "com.google.cloud" % "google-cloud-dataproc" % "4.43.0"

Python

Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di Dataproc Serverless con librerie client. Per ulteriori informazioni, consulta API Dataproc Serverless Python documentazione di riferimento.

Per eseguire l'autenticazione su Dataproc Serverless, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un batch ricorrente carico di lavoro, chiama BatchControllerClient.create_batch con un'istanza Batch che include i seguenti campi:

  • batch.runtime_config.cohort: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, potresti specificare daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.
  • batch.runtime_config.autotuning_config.scenarios: uno o più scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio BROADCAST_HASH_JOIN, MEMORY eSCALING. Puoi modificare l'elenco degli scenari a ogni invio di coorte in batch. Per l'elenco completo degli scenari, consulta Scenario riferimento.

Esempio:

# Create a client
client = dataproc_v1.BatchControllerClient()

# Initialize request argument(s)
batch = dataproc_v1.Batch()
batch.pyspark_batch.main_python_file_uri = "gs://bucket/run_tpcds.py"
batch.runtime_config.cohort = "daily_sales_aggregation"
batch.runtime_config.autotuning_config.scenarios = [
    Scenario.SCALING
]

request = dataproc_v1.CreateBatchRequest(
    parent="parent_value",
    batch=batch,
)

# Make the request
operation = client.create_batch(request=request)

Per utilizzare l'API, devi usare la google-cloud-dataproc libreria client versione 5.10.1 o in un secondo momento. Per aggiungerlo al tuo progetto, puoi utilizzare il seguente requisito:

google-cloud-dataproc>=5.10.1

Airflow

Per abilitare l'ottimizzazione automatica di Dataproc Serverless a ogni invio di un batch ricorrente carico di lavoro, chiama BatchControllerClient.create_batch con un'istanza Batch che include i seguenti campi:

  • batch.runtime_config.cohort: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'ottimizzazione automatica viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, potresti specificare daily_sales_aggregation come nome coorte per un carico di lavoro pianificato che esegue un'attività giornaliera di aggregazione delle vendite.
  • batch.runtime_config.autotuning_config.scenarios: uno o più scenari di ottimizzazione automatica da usare per ottimizzare il carico di lavoro, ad esempio BROADCAST_HASH_JOIN, MEMORY eSCALING. Puoi modificare l'elenco degli scenari a ogni invio di coorte in batch. Per l'elenco completo degli scenari, consulta Scenario riferimento.

Esempio:

create_batch = DataprocCreateBatchOperator(
    task_id="batch_create",
    batch={
        "pyspark_batch": {
            "main_python_file_uri": PYTHON_FILE_LOCATION,
        },
        "environment_config": {
            "peripherals_config": {
                "spark_history_server_config": {
                    "dataproc_cluster": PHS_CLUSTER_PATH,
                },
            },
        },
        "runtime_config": {
            "cohort": "daily_sales_aggregation",
            "autotuning_config": {
                "scenarios": [
                    Scenario.SCALING,
                ]
            }
        },
    },
    batch_id="BATCH_ID",
)

Per utilizzare l'API, devi usare la google-cloud-dataproc libreria client versione 5.10.1 o in un secondo momento. Puoi utilizzare il seguente requisito di ambiente Airflow:

google-cloud-dataproc>=5.10.1

Per aggiornare il pacchetto in Cloud Composer, vedi Installa le dipendenze Python per Cloud Composer .

Visualizza modifiche di ottimizzazione automatica

Per visualizzare le modifiche all'ottimizzazione automatica di Dataproc Serverless in un carico di lavoro batch, esegui il gcloud dataproc batches describe .

Esempio: l'output gcloud dataproc batches describe è simile al seguente:

...
runtimeInfo:
   propertiesInfo:
    # Properties set by autotuning.
    autotuningProperties
      spark.driver.memory:
        annotation: Driver OOM was detected
        value: 11520m
      spark.driver.memoryOverhead:
        annotation: Driver OOM was detected
        value: 4608m
    # Old overwritten properties.
    userProperties
...

Puoi visualizzare le ultime modifiche di ottimizzazione automatica applicate a un carico di lavoro in esecuzione, completato o non riuscito pagina Dettagli batch nella console Google Cloud nella scheda Indaga.

Riquadro di indagine per l&#39;ottimizzazione automatica.