Sistemas de Procesamiento Distribuido: Hadoop y YARN (Sesión Extendida)

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.