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:
- Comprender la arquitectura y los componentes de YARN.
- Explicar cómo YARN gestiona los recursos y las tareas.
- Configurar y monitorear aplicaciones en YARN.
- 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:
-
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.
-
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.
-
ApplicationMaster (AM):
- Específico para cada aplicación.
- Negocia recursos con el ResourceManager y trabaja con el NodeManager para ejecutar y monitorear las tareas.
-
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 | | | +---------------+ | | +---------------+ | +-------------------+ +-------------------+
- Gestión de Recursos en YARN
Flujo de Trabajo de YARN
-
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.
-
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.
-
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.
-
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.
- 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:
-
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.
- Accesible en
-
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
- Modifica el archivo
yarn-site.xml
para configurar el ResourceManager y los NodeManagers. - Inicia el clúster de Hadoop y verifica que YARN esté funcionando correctamente.
Ejercicio 2: Monitoreo de Aplicaciones
- Ejecuta una aplicación MapReduce en el clúster de Hadoop.
- 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>
- Guarda el archivo y reinicia el clúster de Hadoop.
- Verifica el estado de YARN accediendo a la interfaz web en
http://<resourcemanager-hostname>:8088
.
Solución al Ejercicio 2
- Ejecuta una aplicación MapReduce utilizando el siguiente comando:
hadoop jar /path/to/hadoop-mapreduce-examples.jar wordcount /input /output
- 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.
Curso de Hadoop
Módulo 1: Introducción a Hadoop
- ¿Qué es Hadoop?
- Visión General del Ecosistema Hadoop
- Hadoop vs Bases de Datos Tradicionales
- Configuración del Entorno Hadoop
Módulo 2: Arquitectura de Hadoop
- Componentes Principales de Hadoop
- HDFS (Sistema de Archivos Distribuido de Hadoop)
- Marco de Trabajo MapReduce
- YARN (Yet Another Resource Negotiator)
Módulo 3: HDFS (Sistema de Archivos Distribuido de Hadoop)
Módulo 4: Programación MapReduce
- Introducción a MapReduce
- Flujo de Trabajo de un Job MapReduce
- Escribiendo un Programa MapReduce
- Técnicas de Optimización de MapReduce
Módulo 5: Herramientas del Ecosistema Hadoop
Módulo 6: Conceptos Avanzados de Hadoop
- Seguridad en Hadoop
- Gestión de Clústeres Hadoop
- Ajuste de Rendimiento de Hadoop
- Serialización de Datos en Hadoop
Módulo 7: Aplicaciones del Mundo Real y Estudios de Caso
- Hadoop en Almacenamiento de Datos
- Hadoop en Aprendizaje Automático
- Hadoop en Procesamiento de Datos en Tiempo Real
- Estudios de Caso de Implementaciones de Hadoop