Cómo generar perfiles del uso de recursos de Google Cloud Serverless for Apache Spark

En este documento, se describe cómo generar perfiles del uso de recursos de Google Cloud Serverless para Apache Spark. Cloud Profiler recopila y, además, informa de forma continua el uso de CPU de la aplicación y la información de asignación de memoria. Puedes habilitar la generación de perfiles cuando envías un lote o creas una carga de trabajo de sesión con las propiedades de generación de perfiles que se indican en la siguiente tabla. Google Cloud Serverless for Apache Spark agrega opciones de JVM relacionadas a las configuraciones spark.driver.extraJavaOptions y spark.executor.extraJavaOptions que se usan para la carga de trabajo.

Opción Descripción Valor Predeterminado
dataproc.profiling.enabled Habilita la generación de perfiles de la carga de trabajo true o false false
dataproc.profiling.name Nombre del perfil en el servicio del generador de perfiles PROFILE_NAME spark-WORKLOAD_TYPE-WORKLOAD_ID, donde:
  • WORKLOAD_TYPE se establece en batch o session.
  • WORKLOAD_ID se establece en batchId o sessionId

Notas:

  • Serverless for Apache Spark establece la versión del generador de perfiles en el UUID del lote o el UUID de la sesión.
  • El generador de perfiles admite los siguientes tipos de cargas de trabajo de Spark: Spark, PySpark, SparkSql y SparkR.
  • Una carga de trabajo debe ejecutarse durante más de tres minutos para permitir que Profiler recopile y suba datos a un proyecto.
  • Puedes anular las opciones de generación de perfiles enviadas con una carga de trabajo construyendo un SparkConf y, luego, configurando extraJavaOptions en tu código. Ten en cuenta que establecer propiedades de extraJavaOptions cuando se envía la carga de trabajo no anula las opciones de generación de perfiles enviadas con la carga de trabajo.

Para ver un ejemplo de las opciones del generador de perfiles que se usan con un envío por lotes, consulta el ejemplo de carga de trabajo por lotes de PySpark.

Habilita la generación de perfiles

Sigue estos pasos para habilitar la generación de perfiles en una carga de trabajo:

  1. Habilita el generador de perfiles.
  2. Si usas una cuenta de servicio de VM personalizada, otorga el rol de agente de Cloud Profiler a la cuenta de servicio de VM personalizada. Este rol contiene los permisos necesarios del Profiler.
  3. Establece las propiedades de generación de perfiles cuando envíes una carga de trabajo por lotes o crees una plantilla de sesión.

Ejemplo de carga de trabajo por lotes de PySpark

En el siguiente ejemplo, se usa gcloud CLI para enviar una carga de trabajo por lotes de PySpark con la generación de perfiles habilitada.

gcloud dataproc batches submit pyspark PYTHON_WORKLOAD_FILE \
    --region=REGION \
    --properties=dataproc.profiling.enabled=true,dataproc.profiling.name=PROFILE_NAME \
    --  other args

Se crean dos perfiles:

  • PROFILE_NAME-driver para generar un perfil de las tareas del controlador Spark
  • PROFILE_NAME-executor para generar perfiles de tareas del ejecutor de spark

Ver perfiles

Puedes ver los perfiles del generador de perfiles en la consola de Google Cloud .

¿Qué sigue?