Una vez que el programador del administrador de recursos asigna recursos a la tarea para un contenedor en un Node en particular, el maestro de la aplicación inicia el contenedor poniéndose en contacto con el administrador del Node. La tarea cuya clase principal es YarnChild es ejecutada por una aplicación Java.
Localiza los recursos que necesita la tarea antes de poder ejecutarla. Incluye la configuración del trabajo, cualquier archivo de la memoria caché distribuida y el archivo JAR. Finalmente ejecuta el mapa o la tarea de reducción. Cualquier tipo de error en el mapa definido por el usuario y las funciones reducidas (o incluso en YarnChild) no afectan al administrador de Nodes, ya que YarnChild se ejecuta en una JVM dedicada. Por lo tanto, no puede verse afectado por un bloqueo o bloqueo.
Todas las acciones que se ejecutan en la misma JVM que la tarea en sí son realizadas por cada configuración de tarea. Estos están determinados por laOutputCommitter para el trabajo. La acción de confirmación mueve la salida de la tarea a su ubicación final desde su posición inicial para trabajos basados en archivos. Cuando la ejecución especulativa está habilitada, el protocolo de confirmación garantiza que solo se confirme una de las tareas duplicadas y se cancele la otra.
¿Qué significa Streaming?
La transmisión reduce las tareas y ejecuta un mapa especial con el fin de iniciar el ejecutable proporcionado por el usuario y comunicarse con él. Utilizando flujos de entrada y salida estándar, se comunica con el proceso. El proceso de Java pasa pares clave-valor de entrada al proceso externo durante la ejecución de la tarea. Ejecuta el proceso a través del mapa definido por el usuario o reduce la función y pasa los pares clave-valor de salida de vuelta al proceso Java.
Es como si el proceso hijo ejecutara el mapa o redujera el código desde el punto de vista del administrador. Los trabajos de MapReduce pueden tardar desde decenas de segundos hasta horas en ejecutarse, por eso son lotes de ejecución prolongada. Es importante que el usuario obtenga comentarios sobre el progreso del trabajo porque puede llevar mucho tiempo. Cada trabajo, incluida la tarea, tiene un estado que incluye el estado del trabajo o la tarea, los valores de los contadores del trabajo, el progreso de los mapas y las reducciones y la descripción o el mensaje de estado. Estos estados cambian a lo largo del trabajo.
La tarea realiza un seguimiento de su progreso cuando una tarea se ejecuta como si se completara una parte de la tarea. Esta es la proporción de la entrada que se ha procesado para las tareas del mapa. Es un poco más complejo para la tarea de reducción, pero el sistema aún puede estimar la proporción de la entrada de reducción procesada. Cuando una tarea se está ejecutando, realiza un seguimiento de su progreso (es decir, la proporción de la tarea completada). Para tareas de mapa, esta es la proporción de la entrada que ha sido procesada. Para tareas de reducción, es un poco más complejo, pero el sistema aún puede estimar la proporción de la entrada de reducción procesada.
Proceso involucrado –
- Leer un registro de entrada en un mapeador o reductor.
- Escriba un registro de salida en un mapeador o reductor.
- Establezca la descripción del estado.
- Incremente un contador utilizando el método incrCounter() de Reporter o el método increment() de Counter.
- Llame al método de progreso() de Reporter o TaskAttemptContext.
Publicación traducida automáticamente
Artículo escrito por mayank5326 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA