Mejoras en el rendimiento de Spark en Dataproc

En este documento, se muestra cómo habilitar las mejoras de rendimiento de Spark de Dataproc para ayudar a que tus trabajos de Spark de Dataproc procesen más datos en menos tiempo y con costos reducidos.

Entre las mejoras en el rendimiento de Dataproc Spark, se incluyen las siguientes:

  • Mejoras en el optimizador de Spark:
    • Reglas de optimizador escritas para mejores planes Spark
    • Mejora del rendimiento del conector de BigQuery de Dataproc cuando se usa en trabajos de Spark
  • Mejoras en la ejecución de Spark:
    • Mejoras en el motor de ejecución de Spark

Otras mejoras de rendimiento de Dataproc: Consulta el almacenamiento en caché de clústeres de Dataproc, que ayuda a reducir la cantidad de tiempo empleado para acceder a los datos en Cloud Storage.

Cómo habilitar las mejoras de rendimiento de Dataproc Spark

Puedes usar la consola de Google Cloud, Google Cloud CLI y la API de Dataproc para habilitar las mejoras de rendimiento de Dataproc Spark cuando creas un clúster de Dataproc en Compute Engine o cuando envías tu trabajo de Spark al clúster.

Consola

Habilitar mejoras durante la creación del clúster

Realiza los siguientes pasos para habilitar las mejoras de ejecución y optimización de Spark cuando crees un clúster de Dataproc. Las mejoras habilitadas permanecen vigentes para todos los trabajos de Spark enviados al clúster, a menos que inhabilites las mejoras de un trabajo específico cuando envíes el trabajo. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark se inhabilitan en los clústeres de Dataproc.

  1. En la consola de Google Cloud, abre la página Create a cluster de Dataproc.
  2. En el formulario Crear clúster de Dataproc, haz clic en Crear en la línea Clúster en Compute Engine.
  3. En la página Crear un clúster de Dataproc en Compute Engine, haz clic en el panel Personalizar clúster y, luego, desplázate hasta la sección Propiedades del clúster.
    1. Para habilitar las mejoras de optimización de Spark, haz lo siguiente:
      1. Haz clic en + AGREGAR PROPIEDADES.
      2. Selecciona spark en la lista Prefijo y, luego, agrega "spark.dataproc.enhanced.optimizer.enabled" en el campo Key y "true" en el campo Value.
    2. Para habilitar las mejoras de ejecución de Spark, sigue estos pasos:
      1. Haz clic en + AGREGAR PROPIEDADES.
      2. Selecciona spark en la lista Prefijo y, luego, agrega "spark.dataproc.enhanced.execution.enabled" en el campo Key y "true" en el campo Value.
  4. Completa o confirma los otros campos de creación del clúster y, luego, haz clic en Crear.

Habilitar mejoras en el envío de trabajos

Realiza los siguientes pasos a fin de habilitar las optimizaciones y las mejoras de ejecución de Spark para un trabajo de Spark. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark están inhabilitadas en los trabajos de Spark, a menos que las habilites cuando crees un clúster de trabajos o las habilites para un trabajo específico.

  1. En la consola de Google Cloud, abre la página Trabajos de Dataproc.
  2. En la página Trabajos, haz clic en Enviar trabajo y, luego, desplázate hasta la sección Propiedades del trabajo.
    1. Para habilitar las mejoras de optimización de Spark, haz lo siguiente:
      1. Haz clic en + AGREGAR PROPIEDADES. Agrega “spark.dataproc.enhanced.optimizer.enabled” en el campo Clave y “true” en el campo Valor.
    2. Para habilitar las mejoras de ejecución de Spark, sigue estos pasos:
      1. Haz clic en + AGREGAR PROPIEDADES.
      2. Agrega “spark.dataproc.enhanced.execution.enabled” en el campo Clave y “true” en el campo Value
  3. Completa o confirma los otros campos de envío de trabajos y, luego, haz clic en Submit.

gcloud

Habilitar mejoras durante la creación del clúster

Realiza los siguientes pasos para habilitar las mejoras de ejecución y optimización de Spark cuando crees un clúster de Dataproc. Las mejoras habilitadas permanecen vigentes para todos los trabajos de Spark enviados al clúster, a menos que inhabilites las mejoras de un trabajo específico cuando envíes el trabajo. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark se inhabilitan en los clústeres de Dataproc.

  1. Ejecuta el siguiente comando gcloud dataproc clusters create de manera local en una ventana de terminal o en Cloud Shell.

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    Notas:

    • CLUSTER_NAME: Es el nombre del clúster, que debe ser único dentro de un proyecto. El nombre debe comenzar con una letra minúscula y puede contener hasta 51 letras minúsculas, números y guiones. No puede terminar con un guion. El nombre de un clúster borrado se puede volver a usar.
    • PROJECT_ID: Es el proyecto que se asociará con el clúster.
    • REGION: La región de Compute Engine en la que se ubicará el clúster, como us-central1.
      • Puedes agregar la marca opcional --zone=ZONE para especificar una zona dentro de la región especificada, como us-central1-a. Si no especificas una zona, la función de posición de zona automática de Dataproc selecciona una zona con la región especificada.
    • IMAGE: El optimizador de Spark de Dataproc y las mejoras del rendimiento de la ejecución están disponibles en las versiones de imagen 2.0.69+ y 2.1.17+ de Dataproc, y en versiones posteriores. Si omites esta marca, Dataproc seleccionará la versión submenor más reciente de la imagen predeterminada de Dataproc en Compute Engine para el clúster (consulta Versión predeterminada de la imagen de Dataproc).
    • PROPERTIES:

      • Para habilitar las mejoras de optimización de Spark, especifica lo siguiente:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Para habilitar las mejoras de ejecución de Spark, especifica lo siguiente:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Para habilitar la optimización y la ejecución de Spark, especifica lo siguiente:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      
      

Habilitar mejoras en el envío de trabajos

Realiza los siguientes pasos a fin de habilitar las optimizaciones y las mejoras de ejecución de Spark para un trabajo de Spark. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark están inhabilitadas en los trabajos de Spark, a menos que las habilites cuando crees un clúster de trabajos o las habilites para un trabajo específico.

  1. Ejecuta el siguiente comando gcloud dataproc jobs submit de forma local en una ventana de terminal o en Cloud Shell.

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    Notas:

    • SPARK_JOB_TYPE: Especifica spark, pyspark, spark-sql o spark-r .
    • CLUSTER_NAME: Es el nombre del trabajo en el que se ejecutará.
    • REGION: Es la región en la que se encuentra el clúster.
    • PROPERTIES:

      • Para habilitar las mejoras de optimización de Spark, especifica lo siguiente:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • Para habilitar las mejoras de ejecución de Spark, especifica lo siguiente:
      spark.dataproc.enhanced.execution.enabled=true
      
      • Para habilitar la optimización y la ejecución de Spark, especifica lo siguiente:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled
      

API

Habilitar mejoras durante la creación del clúster

Realiza los siguientes pasos para habilitar las mejoras de ejecución y optimización de Spark cuando crees un clúster de Dataproc. Las mejoras habilitadas permanecen vigentes para todos los trabajos de Spark enviados al clúster, a menos que inhabilites las mejoras de un trabajo específico cuando envíes el trabajo. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark se inhabilitan en los clústeres de Dataproc.

  1. Especifica el siguiente SoftwareConfig.properties como parte de una solicitud clusters.create:

    • Para habilitar las mejoras de optimización de Spark, especifica lo siguiente:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • Para habilitar las mejoras de ejecución de Spark, especifica lo siguiente:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Para habilitar la optimización y la ejecución de Spark, especifica lo siguiente:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Habilitar mejoras en el envío de trabajos

Realiza los siguientes pasos a fin de habilitar las optimizaciones y las mejoras de ejecución de Spark para un trabajo de Spark. De forma predeterminada, las mejoras de rendimiento de Dataproc Spark están inhabilitadas en los trabajos de Spark, a menos que las habilites cuando crees un clúster de trabajos o las habilites para un trabajo específico.

  1. Especifica el siguiente properties para SparkJob, PySparkJob, SparkSqlJob o SparkRJob como parte de una solicitud jobs.submit:

    • Para habilitar las mejoras de optimización de Spark, especifica lo siguiente:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • Para habilitar las mejoras de ejecución de Spark, especifica lo siguiente:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Para habilitar la optimización y la ejecución de Spark, especifica lo siguiente:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"