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

En este documento, se proporcionan instrucciones para solucionar problemas comunes que impiden que se inicien las cargas de trabajo por lotes y las sesiones interactivas de Serverless para Apache Spark. Google Cloud

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 se pudo iniciar dentro del período de tiempo de espera predeterminado de 600 segundos (10 minutos). Las causas comunes se relacionan con los permisos de la cuenta de servicio, la disponibilidad de recursos, la configuración de red o las propiedades de Spark.

Causas de la falla de inicio de lotes y sesiones, y pasos para solucionar problemas

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

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 incluyan permisos para la operación de Serverless para Apache Spark y el acceso a Google Cloud recursos. Si la cuenta de servicio no tiene los roles necesarios, el controlador de Spark para el lote o la sesión no se puede inicializar.

  • Rol de trabajador obligatorio: 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 en Cloud Storage o BigQuery, la cuenta de servicio necesita roles relacionados con esos servicios:
    • Cloud Storage: Se necesita el Storage Object Viewer rol (roles/storage.objectViewer) para la lectura y el Storage Object Creator rol (roles/storage.objectCreator) o el Storage Object Admin rol (roles/storage.admin) para la escritura.
    • BigQuery: Se necesita el BigQuery Data Viewer rol (roles/bigquery.dataViewer) para la lectura y el BigQuery Data Editor rol (roles/bigquery.dataEditor) para la escritura.
  • Permisos de registro: La cuenta de servicio necesita un rol con permiso para escribir registros en Cloud Logging. Por lo general, el Logging Writer rol (roles/logging.logWriter) es suficiente.

Sugerencias para solucionar problemas:

Cuota insuficiente

Superar las cuotas específicas del proyecto o la región para Google Cloud Serverless para Apache Spark o para otros Google Cloud recursos puede impedir que se inicien lotes o sesiones nuevos.

Sugerencias para solucionar problemas:

  • Revisa la página de Google Cloud cuotas de Serverless para Apache Spark para comprender los límites de lotes simultáneos, DCUs y almacenamiento de ordenamiento aleatorio.

    • También puedes usar el gcloud compute quotas list comando 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 repetida, considera solicitar un aumento de cuota a través de la Google Cloud consola de.

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 de Google y los servicios sin atravesar la Internet pública, verifica que el Acceso privado a Google esté habilitado para la subred.

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

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

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

Sugerencias para solucionar problemas:

  • Verifica los valores de spark.driver.memory y spark.driver.cores. Verifica que estén dentro de los límites razonables y que se alineen con las DCUs disponibles. Los valores excesivamente grandes para estas propiedades pueden provocar el agotamiento de los recursos y fallas de 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, los archivos de Python, o las dependencias de la aplicación especificados para tu lote o sesión estén ubicados correctamente en Cloud Storage y que la cuenta de servicio de lote o sesión pueda acceder a ellos.

Verifica los registros

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

  1. Ve a la página Cloud Logging en laconsola de. Google Cloud
  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 específicos o seguimientos de pila que pueden identificar el motivo de la falla de inicialización del controlador antes de que se produzca el tiempo de espera de 600 segundos.