Abilitazione della scalabilità automatica dell'applicazione

Non è sempre possibile stimare i requisiti della risorsa (numero di esecutori Spark) di un'applicazione Spark in anticipo, perché questi requisiti potrebbero variare in base alla dimensione del dataset di input.

Per assisterti in questa situazione, puoi inviare un'applicazione Spark con il ridimensionamento automatico, che determinerà automaticamente il numero di esecutori richiesti da un'applicazione in base alla domanda dell'applicazione. Puoi abilitare il ridimensionamento automatico di base per una applicazione Spark aggiungendo l'impostazione di configurazione ae.spark.autoscale.enable=true alla configurazione dell'applicazione esistente.

Inoltro di un'applicazione con ridimensionamento automatico di base

La procedura per inoltrare un'applicazione con il ridimensionamento automatico abilitato è la stessa procedura per inoltrare un'applicazione senza ridimensionamento automatico. L'unica differenza è che devi aggiungere l'impostazione di configurazione ae.spark.autoscale.enable=true al payload dell'applicazione.

  1. Inoltra un'applicazione Spark.
  2. Utilizza il seguente payload JSON di esempio come esempio per abilitare il ridimensionamento automatico di base:
    {
      "application_details": {
        "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
        "arguments": ["/opt/ibm/spark/examples/src/main/resources/people.txt"]
       },
       "conf": {
         "ae.spark.autoscale.enable":"true"
       }
    }
    

Ridimensionamento automatico delle configurazioni dell'applicazione

È possibile utilizzare le seguenti impostazioni di configurazione per controllare ulteriormente il ridimensionamento automatico del numero di executor.

Impostazioni di configurazione per l'autoscaling
Impostazioni di configurazione Descrizione Valore predefinito
ae.spark.autoscale.enable Indica che l'applicazione si ridimensionerà automaticamente in base alla richiesta dell'applicazione e a qualsiasi altra configurazione di ridimensionamento automatico impostata. Se specificato a livello di istanza, tutte le applicazioni nell'istanza eseguiranno il ridimensionamento automatico. false
spark.dynamicAllocation.initialExecutors Specifica il numero iniziale di executor da creare, indipendentemente da qualsiasi richiesta effettuata dall'applicazione Spark 0
spark.dynamicAllocation.minExecutors Specifica il numero minimo di executor da gestire, indipendentemente da qualsiasi richiesta da parte dell'applicazione Spark 0
spark.dynamicAllocation.maxExecutors Specifica il numero massimo di executor da creare indipendentemente da qualsiasi richiesta da parte dell'applicazione Spark 2
ae.spark.autoscale.scaleupDemandPercentage Specifica la percentuale di executor richiesti dall'applicazione Spark che devono essere soddisfatti dal scaler automatico dell'applicazione. Ad esempio, se in una determinata fase un'applicazione Spark richiede 10 executor e il valore per questa configurazione è impostato sul 50 percento, il ridimensionamento automatico dell'applicazione incrementerà il numero di executor di 5 executor. Il valore predefinito di questa configurazione è 100 percento, il che significa essenzialmente che qualsiasi numero di executor richiesto da una richiesta dell'applicazione può essere aggiunto dal programma di scalabilità automatica dell'applicazione. 100
ae.spark.autoscale.scaledownExcessPercentage Specifica la percentuale di esecutori inattivi trattenuti dall'applicazione Spark che devono essere rimossi dal programma di scalabilità automatica dell'applicazione. Ad esempio, se dopo aver completato una determinata fase in un'applicazione Spark, ci sono 20 executor inattivi mantenuti dall'applicazione e il valore per questa configurazione è impostato sul 25 percento, il ridimensionamento automatico dell'applicazione diminuirà gli executor nell'applicazione di 4 executor. Il valore predefinito per questa configurazione è 100 percento, il che significa che il programma di scalabilità automatica dell'applicazione può ridurre tutti gli esecutori inattivi. 100
ae.spark.autoscale.frequency La frequenza, in secondi, con cui il programma di scalabilità automatica dell'applicazione ridimensiona gli executor o ridimensiona gli executor in un'applicazione. 10s

Esempio di payload dell'applicazione di ridimensionamento automatico che mostra i limiti inferiore e superiore del numero di executor che l'applicazione può aumentare o ridurre.

{
  "application_details": {
    "application": "cos://<application-bucket-name>.<cos-reference-name>/my_spark_application.py",
    "conf": {
      "ae.spark.autoscale.enable": "true",
      "spark.dynamicAllocation.initialExecutors": "0",
      "spark.dynamicAllocation.minExecutors": "1",
      "spark.dynamicAllocation.maxExecutors": "10",
      "spark.hadoop.fs.cos.<cos-reference-name>.endpoint": "s3.direct.us-south.cloud-object-storage.appdomain.cloud",
      "spark.hadoop.fs.cos.<cos-reference-name>.iam.api.key": "<iam-api-key-of-application-bucket>"
    }
  }
}

Abilitazione della scalabilità automatica su un'istanza

Per impostazione predefinita, il ridimensionamento automatico dell'applicazione è disabilitato quando crei un'istanza del piano serverless standard Analytics Engine. Se vuoi abilitare la scalabilità automatica per tutte le applicazioni a livello dell'istanza, puoi impostare esplicitamente "ae.spark.autoscale.enable": "true" come configurazione Spark predefinita quando crei l'istanza. Vedere Default Spark configuration.