Sistemas de Procesamiento Distribuido: Hadoop y YARN (Sesión Extendida)
Introducción a HADUP y YARN
Conceptos Básicos de HADUP
- Bienvenida a la sesión sobre ingeniería de datos avanzada, enfocándose en HADUP y su componente YARN, esenciales para el procesamiento de grandes volúmenes de datos.
- Se abordará cómo HADUP permite tareas paralelas distribuidas entre nodos, facilitando el procesamiento eficiente.
Arquitectura del Clúster
- Definición de clúster: conjunto de computadoras interconectadas que optimizan la comunicación entre el nodo maestro y los nodos trabajadores.
- El nodo maestro gestiona, planifica y coordina las tareas del sistema con alta capacidad de cómputo (ejemplo: 12 núcleos y 128 GB RAM).
- Los nodos trabajadores ejecutan tareas asignadas por el maestro, cada uno con recursos propios (8 núcleos y 64 GB RAM), procesando datos en paralelo.
Funcionalidad de YARN
Gestión de Recursos
- YARN es un software que gestiona recursos como CPU, memoria y almacenamiento dentro del marco Apache HADUP.
- Actúa como una capa intermedia entre el sistema operativo y las aplicaciones, decidiendo la asignación dinámica de recursos.
Componentes Fundamentales
- La arquitectura de YARN incluye cuatro componentes clave: resource manager, node manager, container y application master.
Resource Manager
- El resource manager opera en el nodo maestro con visión global del clúster; planifica y coordina los recursos disponibles.
Node Manager
- Cada node manager se ejecuta en un nodo específico; supervisa procesos locales e informa al resource manager sobre el estado del nodo.
Contenedores y Application Master
Contenedores
- Un contenedor representa una fracción específica de recursos (CPU/memoria); actúa como una máquina virtual ligera para ejecutar tareas específicas.
Application Master
¿Cómo se gestiona la ejecución de tareas en un clúster con YARN?
Rol del Application Master
- El application master controla la ejecución de las tareas y es esencial para la tolerancia a fallos, detectando errores y reprogramando tareas fallidas en nuevos contenedores o nodos.
- Cada cliente que envía una aplicación al clúster tiene su propio application master ejecutándose en un contenedor independiente, coordinando distintos contenedores distribuidos en varios nodos.
- Actúa como el director de orquesta, asegurando correcta asignación de recursos y supervisando el avance de las tareas hasta que la aplicación finaliza.
Ejecución del programa MAP Reduce
- YARN es el sistema encargado de gestionar los recursos y coordinar la ejecución de trabajos MAP Reduce dentro del clúster.
- Al lanzar una aplicación, el usuario puede especificar cuántos mappers o contenedores utilizará y la cantidad de memoria requerida por cada uno.
- Cada trabajo (job) está compuesto por varias tareas; el resource manager verifica disponibilidad antes de permitir su ejecución.
Gestión eficiente de recursos
- Si hay capacidad suficiente, el trabajo se lanza; si no, se coloca en cola hasta que haya recursos disponibles.
- El resource manager negocia con los node managers para encontrar un contenedor disponible en los worker nodes tras recibir un trabajo desde el cliente.
- El application master se lanza dentro del contenedor asignado y coordina la ejecución del job enviado por el usuario.
Proceso durante la ejecución
- Una vez activo, solicita nuevos contenedores al resource manager para ejecutar las distintas tareas del trabajo map reduce.
- Las tareas representan el procesamiento real; cada nodo tiene un node manager que administra los contenedores asignados y lanza las tareas correspondientes.
- Durante la ejecución, las tareas informan su estado al application master mientras este supervisa todo el proceso.
Finalización del trabajo
- Cuando todas las tareas finalizan, los contenedores son liberados automáticamente y sus recursos vuelven a estar disponibles para otros trabajos en el clúster.
- Al finalizar todas las tareas del job, también concluye el proceso del application master; esto cierra oficialmente la ejecución del trabajo.
Proceso de Manejo de Datos en Sistemas Distribuidos
Fases del Procesamiento de Datos
- Herramientas como Flume y Scoop son responsables de recibir información desde diversas fuentes, incluyendo bases de datos, sensores y aplicaciones, para transferirla al sistema de almacenamiento.
- En la segunda fase, los datos se almacenan de manera distribuida utilizando HDFS o HBASE, lo que garantiza tolerancia a fallos y escalabilidad dentro del clúster.
- La tercera etapa implica el procesamiento y análisis mediante frameworks como Pig y HE, que se conectan con MAP Reduce para realizar un procesamiento paralelo de los datos.
- Durante esta fase, los datos son transformados y se extrae información valiosa a partir de ellos.