Soluciona problemas de los trabajos de Dataproc

En este documento, se enumeran los mensajes de error comunes de los trabajos y se proporciona información de supervisión y depuración de trabajos para ayudarte a solucionar problemas de trabajos de Dataproc.

Mensajes de error comunes de los trabajos

No se adquirió la tarea

Indica que el agente de Dataproc en el nodo principal no pudo adquirir la tarea del plano de control. Esto sucede a menudo debido a problemas de memoria insuficiente (OOM) o de red. Si el trabajo se ejecutó de forma correcta y no cambiaste la configuración de red, el OOM es la causa más probable, el resultado del envío de muchos trabajos o trabajos en ejecución simultáneos cuyos controladores consumen memoria significativa (por ejemplo, los trabajos que cargan conjuntos de datos grandes en la memoria).

No se encontró ningún agente activo en los nodos principales

Indica que el agente de Dataproc en el nodo principal no está activo y no puede aceptar trabajos nuevos. Esto sucede a menudo debido a problemas de memoria insuficiente (OOM) o de red, o si la VM del nodo principal no está en buen estado. Si el trabajo se ejecutó de forma correcta y no cambiaste la configuración de red, el OOM es la causa más probable, el resultado del envío de muchos trabajos o trabajos en ejecución simultáneos cuyos controladores consumen memoria significativa (los trabajos que cargan conjuntos de datos grandes en la memoria).

Para ayudar a resolver el problema, prueba las siguientes acciones:

No se encontró la tarea

Este error indica que se borró el clúster mientras se ejecutaba un trabajo. Puedes realizar las siguientes acciones para identificar la principal que realizó la eliminación y confirmar que la eliminación del clúster ocurrió cuando se ejecutaba un trabajo:

  • Visualiza los registros de auditoría de Dataproc para identificar la principal que realizó la operación de eliminación.

  • Usa Logging o la CLI de gcloud para verificar que el último estado conocido de la aplicación YARN era RUNNING:

    • Usa el siguiente filtro en Logging:
    resource.type="cloud_dataproc_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.cluster_uuid="CLUSTER_UUID"
    "YARN_APPLICATION_ID State change from"
    
    • Ejecuta gcloud dataproc jobs describe job-id --region=REGION, luego verifica yarnApplications: > STATE en el resultado.
  • Si la principal que borró el clúster es la cuenta de servicio del agente de servicio de Dataproc, verifica si el clúster se configuró con una duración de eliminación automática que sea menor que la duración del trabajo.

Para evitar errores de Task not found, usa la automatización para asegurarte de que los clústeres no se borren antes de que se completen todos los trabajos en ejecución.

No queda espacio en el dispositivo

Dataproc escribe datos de HDFS y de borrador en el disco. Este mensaje de error indica que el clúster se creó con espacio en disco insuficiente. Para analizar y evitar este error, haz lo siguiente:

  • Verifica el tamaño del disco principal del clúster que aparece en la pestaña Configuración de la página Detalles del clúster en la Google Cloud consola. El tamaño mínimo recomendado del disco es de 1000 GB para los clústeres que usan el n1-standard-4 tipo de máquina y de 2 TB para los clústeres que usan el n1-standard-32 tipo de máquina.

  • Si el tamaño del disco del clúster es menor que el tamaño recomendado, vuelve a crear el clúster con al menos el tamaño de disco recomendado.

  • Si el tamaño del disco es el tamaño recomendado o superior, usa SSH para conectarte a la VM principal del clúster y, luego, ejecuta df -h en la VM principal para verificar el uso del disco y determinar si se necesita espacio en disco adicional.

  • Recopila y verifica las métricas del disco.

Supervisión y depuración del trabajo

Usa la CLI de Google Cloud, la API de REST de Dataproc y la Google Cloud consola para analizar y depurar los trabajos de Dataproc.

gcloud CLI

Para examinar el estado de un trabajo activo:

gcloud dataproc jobs describe job-id \
    --region=region

Para ver el resultado del controlador del trabajo, consulta Visualiza el resultado del trabajo.

API de REST

Llama a jobs.get para examinar los campos JobStatus.State, JobStatus.Substate, JobStatus.details y YarnApplication del trabajo.

Console

Para ver el resultado del controlador del trabajo, consulta Visualiza el resultado del trabajo.

Para ver el registro del agente de dataproc, accede a Logging y selecciona Clúster de Dataproc→Nombre del clúster→UUID del clúster en el selector de clústeres del Explorador de registros.

Luego, usa el selector de registros para seleccionar registros google.dataproc.agent.

Visualiza registros de trabajos en Logging

Si un trabajo falla, puedes acceder a los registros de trabajos en Logging.

Determina quién envió un trabajo

Cómo buscar los detalles de un trabajo mostrará quién envió ese trabajo en el submittedBy campo. Por ejemplo, el resultado de este trabajo muestra que user@domain envió el trabajo de ejemplo a un clúster.

...
placement:
  clusterName: cluster-name
  clusterUuid: cluster-uuid
reference:
  jobId: job-uuid
  projectId: project
status:
  state: DONE
  stateStartTime: '2018-11-01T00:53:37.599Z'
statusHistory:
- state: PENDING
  stateStartTime: '2018-11-01T00:33:41.387Z'
- state: SETUP_DONE
  stateStartTime: '2018-11-01T00:33:41.765Z'
- details: Agent reported job success
  state: RUNNING
  stateStartTime: '2018-11-01T00:33:42.146Z'
submittedBy: user@domain