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 Viewerrol (roles/storage.objectViewer) para la lectura y elStorage Object Creatorrol (roles/storage.objectCreator) o elStorage Object Adminrol (roles/storage.admin) para la escritura. - BigQuery: Se necesita el
BigQuery Data Viewerrol (roles/bigquery.dataViewer) para la lectura y elBigQuery Data Editorrol (roles/bigquery.dataEditor) para la escritura.
- Cloud Storage: Se necesita el
- Permisos de registro: La cuenta de servicio necesita un rol con
permiso para escribir registros en Cloud Logging. Por lo general, el
Logging Writerrol (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 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 listcomando 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"
- También puedes usar el
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.memoryyspark.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.
- Ve a la página Cloud Logging en laconsola de. Google Cloud
- Filtra por lotes o sesiones de Serverless para Apache Spark:
- En el menú desplegable Recurso, selecciona
Cloud Dataproc BatchoCloud Dataproc 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.