IBM Cloud Docs
Habilitación del escalado automático de aplicaciones

Habilitación del escalado automático de aplicaciones

No siempre es posible estimar por adelantado los requisitos de recursos (número de ejecutores de Spark) de una aplicación de Spark, porque estos pueden variar en función del tamaño del conjunto de datos de entrada.

Para facilitar esta situación, puede enviar una aplicación de Spark con escalado automático, que determinará automáticamente el número de ejecutores que necesita una aplicación en función de su demanda. Para habilitar el escalado automático básico de una aplicación de Spark, añada el valor de configuración ae.spark.autoscale.enable=true a la configuración de la aplicación existente.

Envío de una aplicación con escalado automático básico

Los pasos para enviar una aplicación con escalado automático habilitado son los mismos que para enviar una aplicación sin escalado automático. La única diferencia es que debe añadir el valor de configuración ae.spark.autoscale.enable=true a la carga útil de la aplicación.

  1. Enviar una aplicación de Spark.
  2. Utilice la siguiente carga útil de JSON de ejemplo como ejemplo para habilitar el escalado automático básico:
    {
      "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"
       }
    }
    

Escalado automático de configuraciones de aplicación

Puede utilizar los siguientes valores de configuración para aumentar el control del escalado automático del número de ejecutores.

Tabla 1. Valores de configuración para el escalado automático
Valores de configuración Descripción Valor predeterminado
ae.spark.autoscale.enable Indica que la aplicación se escalará automáticamente en función de su demanda y de las demás configuraciones de escalado automático que se hayan establecido. Si se especifica a nivel de instancia, se escalarán automáticamente todas las aplicaciones de la instancia. false
spark.dynamicAllocation.initialExecutors Especifica el número inicial de ejecutores que se van a crear, independientemente de cualquier demanda realizada por la aplicación de Spark 0
spark.dynamicAllocation.minExecutors Especifica el número mínimo de ejecutores que se deben mantener, independientemente de cualquier demanda de la aplicación de Spark 0
spark.dynamicAllocation.maxExecutors Especifica el número máximo de ejecutores que se van a crear, independientemente de cualquier demanda de la aplicación de Spark 2
ae.spark.autoscale.scaleupDemandPercentage Especifica el porcentaje de ejecutores que demanda la aplicación de Spark que debe realizar el escalador automático de la aplicación. Por ejemplo, si en una etapa determinada una aplicación de Spark solicita 10 ejecutores y el valor de esta configuración está establecido en 50 por ciento, el escalador automático de la aplicación aumentará el número de ejecutores en 5 ejecutores. El valor predeterminado de esta configuración es 100 por ciento, lo que significa, básicamente, que el escalador automático de la aplicación puede añadir cualquier número de ejecutores que solicite una aplicación. 100
ae.spark.autoscale.scaledownExcessPercentage Especifica el porcentaje de los ejecutores desocupados retenidos por la aplicación de Spark que debe eliminar el escalador automático de la aplicación. Por ejemplo, si tras completar una determinada etapa en una aplicación de Spark hay 20 ejecutores desocupados retenidos por la aplicación, y el valor de esta configuración está establecido en 25 por ciento, el escalador automático de la aplicación reducirá los ejecutores de la aplicación en 4 ejecutores. El valor predeterminado de esta configuración es 100 por ciento, lo que significa que el escalador automático de la aplicación puede reducir todos los ejecutores desocupados. 100
ae.spark.autoscale.frequency La frecuencia en segundos a la que el escalador automático de la aplicación escala los ejecutores de una aplicación, ya sea para aumentarlos o reducirlos. 10s

Ejemplo de una carga útil de aplicación de escalado automático que muestra los límites inferior y superior del número de ejecutores hasta los que se puede aumentar o reducir en la aplicación.

{
  "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>"
    }
  }
}

Habilitación del escalado automático en una instancia

De forma predeterminada, al crear una instancia del plan Analytics Engine Standard sin servidor, el escalado automático de aplicaciones está habilitado. Si desea habilitar el escalado automático para todas las aplicaciones a nivel de instancia, puede establecer explícitamente "ae.spark.autoscale.enable": "true" como configuración de Spark predeterminada al crear la instancia. Consulte Configuración de Spark predeterminada.