En este documento, se proporciona orientación para solucionar problemas comunes que impiden que se inicien las cargas de trabajo por lotes y las sesiones interactivas de Managed Service para Apache 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 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 Managed Service para Apache Spark requiere roles de IAM específicos que incluyan permisos para la operación de Managed Service para Apache Spark y el acceso a los 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 Managed Service para Apache Spark (
roles/dataproc.worker). Este rol contiene los permisos mínimos necesarios para que Managed Service 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 rol
Storage Object Viewer(roles/storage.objectViewer) para la lectura, y el rolStorage Object Creator(roles/storage.objectCreator) o el rolStorage Object Admin(roles/storage.admin) para la escritura. - BigQuery: Se necesita el rol
BigQuery Data Viewer(roles/bigquery.dataViewer) para la lectura y el rolBigQuery Data Editor(roles/bigquery.dataEditor) para la escritura.
- Cloud Storage: Se necesita el rol
- Permisos de registro: La cuenta de servicio necesita un rol con permiso para escribir registros en Cloud Logging. Por lo general, el rol
Logging Writer(roles/logging.logWriter) es suficiente.
Sugerencias para solucionar problemas:
- Identifica la cuenta de servicio de lote o sesión . Si no se especifica, se usa automáticamente la cuenta de servicio predeterminada de Compute Engine.
- Ve a la página IAM y administración > IAM en la Google Cloud consola, busca la cuenta de servicio de lote o sesión y, luego, verifica que tenga los roles necesarios para las operaciones. Otorga los roles faltantes.
Cuota insuficiente
Superar las cuotas específicas del proyecto o la región para Managed Service 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 cuotas de Managed Service para Apache Spark para comprender los límites de lotes simultáneos, DCU y almacenamiento de ordenamiento aleatorio.
- También puedes usar el comando
gcloud compute quotas listpara 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"
- También puedes usar el comando
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 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 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.memoryyspark.driver.cores. Verifica que estén dentro de los límites razonables y que se alineen con las DCU 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 fallas en la creación de lotes es examinar los registros detallados en Cloud Logging.
- Ve a la página Cloud Logging en laconsola de. Google Cloud
- Filtra por lotes o sesiones de Managed Service para Apache Spark:
- En el menú desplegable Recurso, selecciona
Cloud Managed Service for Apache Spark BatchoCloud Managed Service for Apache Spark Session. - Filtra por
batch_idosession_idpara el lote o la sesión fallidos. También puedes filtrar porproject_idylocation(región).
- En el menú desplegable Recurso, selecciona
- 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.