Too many fetch-failures - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Too many fetch-failures

La presencia de mensajes de error Too many fetch-failures (Demasiados errores de recuperación) o Error reading task output (Error al leer la salida de la tarea) en los registros de intentos de tareas o de pasos indican que la tarea en ejecución depende de la salida de otra tarea. Esto suele ocurrir cuando una tarea de reducción se pone en cola para ejecutarse y requiere la salida de una o más tareas de asignación y la salida no está disponible aún.

Hay varias razones por las que la salida podría no estar disponible:

  • La tarea requisito previo aún se está procesando. Suele ser una tarea de asignación.

  • Los datos podrían no estar disponibles debido a una mala conectividad de red si los datos se encuentran en otra instancia.

  • Si HDFS se usa para recuperar el resultado, es posible que haya un problema conHDFS.

La causa más frecuente de este error es que la tarea anterior sigue en procesamiento. Esto es especialmente probable si los errores se producen cuando las tareas de reducción son las primeras que se intentan ejecutar. Puede comprobar si este es el caso revisando el registro syslog para el paso de clúster que devuelve el error. Si el syslog muestra las tareas de asignación y reducción progresando, esto indica que la fase de reducción ha comenzado mientras hay tareas de asignación que no se han completado aún.

Una cosa que hay que buscar en los registros es un porcentaje de progreso de asignación que pasa al 100% y, a continuación, disminuye hasta un valor inferior. Cuando el porcentaje de asignación está al 100%, eso no significa que todas las tareas de asignación se han completado. Simplemente significa que Hadoop está ejecutando todas las tareas de asignación. Si este valor vuelve a disminuir por debajo del 100%, significa que una tarea de asignación ha devuelto un error y, en función de la configuración, Hadoop podría intentar volver a programar la tarea. Si el porcentaje del mapa se mantiene al 100% en los registros, observe específicamente RunningMapTasks las CloudWatch métricas para comprobar si la tarea del mapa aún se está procesando. También puede encontrar esta información a través de la interfaz web de Hadoop en el nodo principal.

Si está viendo este problema, hay varias cosas que puede probar:

  • Indique a la fase de reducción que espere más tiempo antes de empezar. Puede hacerlo modificando el ajuste de configuración de Hadoop mapred.reduce.slowstart.completed.maps a un tiempo superior. Para obtener más información, consulte Crear acciones de arranque para instalar software adicional.

  • Asigne el recuento de reductores a la capacidad de reductor total del clúster. Esto se hace ajustando la opción de configuración de Hadoop mapred.reduce.tasks para el trabajo.

  • Utilice un código de clase de combinador para minimizar el número de salidas que se tienen que recuperar.

  • Comprueba que no haya problemas con el EC2 servicio de Amazon que afecten al rendimiento de la red del clúster. Puede hacerlo utilizando el Panel de estado del servicio.

  • Revise los recursos CPU y la memoria de las instancias del clúster para asegurarse de que el procesamiento de datos no sobrecargue los recursos de los nodos. Para obtener más información, consulte Configuración del hardware y las redes de los clústeres.

  • Comprueba la versión de Amazon Machine Image (AMI) utilizada en tu EMR clúster de Amazon. Si la versión es de la 2.3.0 a la 2.4.4 incluida, actualice a una versión posterior. AMIlas versiones del rango especificado utilizan una versión de Jetty que puede no entregar los resultados de la fase de mapeo. El error de recuperación se produce cuando los reductores no pueden obtener la salida desde la fase de asignación.

    Jetty es un HTTP servidor de código abierto que se utiliza para las comunicaciones de máquina a máquina dentro de un clúster de Hadoop.