YARN, que significa "Yet Another Resource Negotiator", es un componente fundamental de la arquitectura de Hadoop que se encarga de la gestión de recursos y la programación de tareas en un clúster de Hadoop. Introducido en Hadoop 2.0, YARN permite que múltiples aplicaciones se ejecuten simultáneamente en un clúster, mejorando la utilización de recursos y la escalabilidad.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  1. Comprender la arquitectura y los componentes de YARN.
  2. Explicar cómo YARN gestiona los recursos y las tareas.
  3. Configurar y monitorear aplicaciones en YARN.

  1. Arquitectura de YARN

Componentes Principales de YARN

YARN consta de varios componentes clave que trabajan juntos para gestionar los recursos y las tareas en un clúster de Hadoop:

  1. ResourceManager (RM):

    • Es el maestro que gestiona los recursos del clúster.
    • Se encarga de la asignación de recursos a las aplicaciones.
    • Tiene dos componentes principales:
      • Scheduler: Asigna recursos a las aplicaciones basándose en políticas de capacidad, colas y prioridades.
      • ApplicationManager: Gestiona el ciclo de vida de las aplicaciones, desde su inicio hasta su finalización.
  2. NodeManager (NM):

    • Se ejecuta en cada nodo del clúster.
    • Supervisa el uso de recursos (CPU, memoria, disco) en su nodo.
    • Gestiona la ejecución de contenedores en su nodo.
  3. ApplicationMaster (AM):

    • Específico para cada aplicación.
    • Negocia recursos con el ResourceManager y trabaja con el NodeManager para ejecutar y monitorear las tareas.
  4. Contenedores:

    • Unidades de recursos (CPU, memoria) asignadas a una aplicación.
    • Cada contenedor ejecuta una tarea específica de la aplicación.

Diagrama de Arquitectura de YARN

+-------------------+
| ResourceManager   |
| +---------------+ |
| | Scheduler     | |
| +---------------+ |
| | AppManager    | |
| +---------------+ |
+-------------------+
         |
         v
+-------------------+       +-------------------+
| NodeManager       |       | NodeManager       |
| +---------------+ |       | +---------------+ |
| | Contenedor 1  | |       | | Contenedor 3  | |
| +---------------+ |       | +---------------+ |
| | Contenedor 2  | |       | | Contenedor 4  | |
| +---------------+ |       | +---------------+ |
+-------------------+       +-------------------+

  1. Gestión de Recursos en YARN

Flujo de Trabajo de YARN

  1. Inicio de la Aplicación:

    • El cliente envía una solicitud al ResourceManager para iniciar una aplicación.
    • El ResourceManager asigna un contenedor para el ApplicationMaster de la aplicación.
  2. Asignación de Recursos:

    • El ApplicationMaster solicita recursos adicionales al ResourceManager.
    • El ResourceManager asigna contenedores en diferentes nodos basándose en la disponibilidad y las políticas de recursos.
  3. Ejecución de Tareas:

    • El ApplicationMaster coordina con los NodeManagers para ejecutar las tareas en los contenedores asignados.
    • Los NodeManagers supervisan y reportan el estado de los contenedores al ApplicationMaster.
  4. Finalización de la Aplicación:

    • Una vez que todas las tareas se completan, el ApplicationMaster notifica al ResourceManager.
    • El ResourceManager libera los recursos asignados a la aplicación.

Ejemplo de Flujo de Trabajo

1. Cliente -> ResourceManager: Solicitud para iniciar la aplicación.
2. ResourceManager -> NodeManager: Asignación de contenedor para ApplicationMaster.
3. ApplicationMaster -> ResourceManager: Solicitud de recursos adicionales.
4. ResourceManager -> NodeManagers: Asignación de contenedores para tareas.
5. NodeManagers -> ApplicationMaster: Ejecución y monitoreo de tareas.
6. ApplicationMaster -> ResourceManager: Notificación de finalización de la aplicación.

  1. Configuración y Monitoreo de YARN

Configuración Básica

Para configurar YARN, se deben modificar los archivos de configuración en el clúster de Hadoop. Los archivos principales son yarn-site.xml y capacity-scheduler.xml.

Ejemplo de Configuración en yarn-site.xml

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>resourcemanager-hostname</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>8192</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>4</value>
  </property>
</configuration>

Monitoreo de Aplicaciones

YARN proporciona varias herramientas para monitorear el estado y el rendimiento de las aplicaciones:

  1. Interfaz Web de YARN:

    • Accesible en http://<resourcemanager-hostname>:8088.
    • Proporciona información sobre el estado del clúster, las aplicaciones en ejecución y los recursos utilizados.
  2. Comandos de Línea de Comandos:

    • yarn application -list: Lista todas las aplicaciones en ejecución.
    • yarn application -status <application_id>: Muestra el estado de una aplicación específica.

Ejemplo de Uso de Comandos

# Listar todas las aplicaciones en ejecución
yarn application -list

# Ver el estado de una aplicación específica
yarn application -status application_1234567890123_0001

Ejercicio Práctico

Ejercicio 1: Configuración de YARN

  1. Modifica el archivo yarn-site.xml para configurar el ResourceManager y los NodeManagers.
  2. Inicia el clúster de Hadoop y verifica que YARN esté funcionando correctamente.

Ejercicio 2: Monitoreo de Aplicaciones

  1. Ejecuta una aplicación MapReduce en el clúster de Hadoop.
  2. Utiliza la interfaz web de YARN y los comandos de línea de comandos para monitorear el estado de la aplicación.

Soluciones

Solución al Ejercicio 1

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>resourcemanager-hostname</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>8192</value>
  </property>
  <property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>4</value>
  </property>
</configuration>
  1. Guarda el archivo y reinicia el clúster de Hadoop.
  2. Verifica el estado de YARN accediendo a la interfaz web en http://<resourcemanager-hostname>:8088.

Solución al Ejercicio 2

  1. Ejecuta una aplicación MapReduce utilizando el siguiente comando:
    hadoop jar /path/to/hadoop-mapreduce-examples.jar wordcount /input /output
    
  2. Monitorea la aplicación utilizando la interfaz web de YARN y los siguientes comandos:
    yarn application -list
    yarn application -status <application_id>
    

Conclusión

En esta sección, hemos explorado YARN, su arquitectura y cómo gestiona los recursos y las tareas en un clúster de Hadoop. También hemos aprendido a configurar y monitorear aplicaciones en YARN. Con este conocimiento, estás preparado para profundizar en la programación MapReduce y otras herramientas del ecosistema Hadoop en los próximos módulos.

© Copyright 2024. Todos los derechos reservados