Soluciona problemas relacionados con errores en la creación de lotes y sesiones

En este documento, se proporciona orientación para solucionar problemas comunes que impiden que se inicien las cargas de trabajo por lotes deGoogle Cloud Serverless for Apache Spark y las sesiones interactivas de Spark.

Descripción general

Por lo general, cuando no se puede iniciar un lote o una sesión, se muestra el siguiente mensaje de error:

Driver compute node failed to initialize for batch in 600 seconds

Este mensaje de error indica que el controlador de Spark no pudo iniciarse dentro del período de tiempo de espera predeterminado de 600 segundos (10 minutos). Las causas comunes están relacionadas con los permisos de la cuenta de servicio, la disponibilidad de recursos, la configuración de red o las propiedades de Spark.

Causas de las fallas de inicio de lotes y sesiones, y pasos para solucionar problemas

En las siguientes secciones, se enumeran las causas comunes de los errores de inicio de lotes y sesiones, junto con sugerencias para solucionar problemas que te ayudarán a resolverlos.

Permisos insuficientes de la cuenta de servicio

La cuenta de servicio que usa tu lote o sesión de Serverless para Apache Spark requiere roles de IAM específicos que incluyen permisos para la operación de Serverless para Apache Spark y el acceso a recursos de Google Cloud . Si la cuenta de servicio no tiene los roles necesarios, es posible que no se pueda inicializar el controlador de Spark para el lote o la sesión.

  • Rol de trabajador requerido: La cuenta de servicio de lote o sesión debe tener el rol de trabajador de Dataproc (roles/dataproc.worker). Este rol contiene los permisos mínimos necesarios para que Serverless para Apache Spark aprovisione y administre recursos de procesamiento.
  • Permisos de acceso a los datos: Si tu aplicación de Spark lee o escribe datos en Cloud Storage o BigQuery, la cuenta de servicio necesita roles relacionados con esos servicios:
    • Cloud Storage: Se necesita el rol de Storage Object Viewer (roles/storage.objectViewer) para leer y el rol de Storage Object Creator (roles/storage.objectCreator) o el rol de Storage Object Admin (roles/storage.admin) para escribir.
    • BigQuery: Se necesita el rol de BigQuery Data Viewer (roles/bigquery.dataViewer) para leer y el rol de BigQuery Data Editor (roles/bigquery.dataEditor) para escribir.
  • Permisos de registro: La cuenta de servicio necesita un rol con permiso para escribir registros en Cloud Logging. Por lo general, el rol de Logging Writer (roles/logging.logWriter) es suficiente.

Sugerencias para solucionar problemas:

Cuota insuficiente

Si se superan las cuotas específicas del proyecto o la región para Google Cloud Serverless for Apache Spark o para otros Google Cloud recursos, es posible que no se inicien nuevos lotes o sesiones.

Sugerencias para solucionar problemas:

  • Revisa la página Cuotas deGoogle Cloud Serverless for Apache Spark para comprender los límites de los lotes simultáneos, las DCU y el almacenamiento aleatorio.

    • También puedes usar el comando gcloud compute quotas list para ver el uso y los límites actuales de tu proyecto y región:
      gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
      
  • Si alcanzas los límites de cuota de forma reiterada, considera solicitar un aumento de cuota a través de la consola de Google Cloud .

Problemas de configuración de red

La configuración de red incorrecta, como la configuración de VPC, el Acceso privado a Google o las reglas de firewall, puede impedir que el controlador de Spark se inicialice o se conecte a los servicios necesarios.

Sugerencias para solucionar problemas:

  • Verifica que la red de VPC y la subred especificadas para tu lote o sesión estén configuradas correctamente y tengan suficientes direcciones IP disponibles.

  • Si tu lote o sesión necesita acceder a las APIs y los servicios de Google sin atravesar la Internet pública, verifica que el Acceso privado a Google esté habilitado para la subred.

  • Revisa las reglas de firewall de tu VPC para verificar que no bloqueen de forma inadvertida la comunicación interna ni la salida a las APIs de Google o los servicios externos que requiere tu aplicación de Spark.

Problemas con el código de la aplicación o las propiedades de Spark no válidas

Las propiedades de Spark mal configuradas, en especial las relacionadas con los recursos del controlador, o los problemas en el código de la aplicación de Spark pueden provocar errores de inicio.

Sugerencias para solucionar problemas:

  • Verifica los valores de spark.driver.memory y spark.driver.cores. Verifica que estén dentro de límites razonables y que se alineen con las DCU disponibles. Los valores excesivamente grandes para estas propiedades pueden provocar el agotamiento de recursos y fallas en la inicialización. Quita las propiedades de Spark innecesarias o experimentales para simplificar la depuración.

  • Intenta ejecutar una aplicación de Spark "Hello World" para determinar si el problema se debe a la configuración de tu entorno o a la complejidad o los errores del código.

  • Verifica que todos los archivos JAR de la aplicación, los archivos de Python o las dependencias especificados para tu lote o sesión estén ubicados correctamente en Cloud Storage y que la cuenta de servicio del lote o la sesión pueda acceder a ellos.

Verifica los registros

Un paso fundamental para diagnosticar las fallas en la creación de lotes es examinar los registros detallados en Cloud Logging.

  1. Ve a la página Cloud Logging en la Google Cloud consola.
  2. Filtra por lotes o sesiones de Serverless para Apache Spark:
    1. En el menú desplegable Recurso, selecciona Cloud Dataproc Batch o Cloud Dataproc Session.
    2. Filtra por batch_id o session_id para el lote o la sesión fallidos. También puedes filtrar por project_id y location (región).
  3. Busca entradas de registro con jsonPayload.component="driver". Estos registros suelen contener mensajes de error o seguimientos de pila específicos que pueden identificar el motivo de la falla en la inicialización del controlador antes de que se produzca el tiempo de espera de 600 segundos.