Hadoop YARN es un subproyecto del proyecto Apache Hadoop que se presentó en 2012. YARN significa Yet Another Resource Negotiator (Otro negociador de recursos). Fue diseñado para resolver los problemas de escalabilidad que tenía la implementación original de Hadoop MapReduce. YARN es una plataforma genérica que se puede utilizar para ejecutar una variedad de aplicaciones distribuidas.
La idea clave detrás de YARN es dividir las funcionalidades del JobTracker, que es el componente de gestión de recursos en la arquitectura original de Hadoop MapReduce, en demonios separados. El ResourceManager es el componente central de YARN. Es responsable de gestionar los recursos del clúster y de programar las aplicaciones que se ejecutan en el clúster. El NodeManager es un agente por máquina que se encarga de lanzar y supervisar los contenedores en nombre del ResourceManager.
Los contenedores son un concepto en YARN que encapsula todos los recursos necesarios para ejecutar una aplicación. Esto incluye cosas como memoria, CPU, espacio en disco y recursos de red. Las aplicaciones que se ejecutan en YARN son capaces de solicitar la cantidad específica de recursos que necesitan del ResourceManager.
YARN también introdujo el concepto de ApplicationMaster. El ApplicationMaster es un agente por aplicación que es responsable de negociar los recursos del ResourceManager y de trabajar con el NodeManager para lanzar y monitorear los contenedores. El ApplicationMaster es un programa específico para la aplicación que se ejecuta en YARN.
Dado que YARN es una plataforma genérica, se puede utilizar para ejecutar una variedad de diferentes tipos de aplicaciones. Esto incluye no sólo aplicaciones MapReduce, sino también otros tipos de aplicaciones distribuidas como Apache Spark y Apache HBase. ¿Es Yarn un sistema operativo? No, Yarn no es un sistema operativo. Es un gestor de paquetes de JavaScript, similar a npm.
¿Por qué se utiliza YARN en Hadoop?
Hay algunas razones por las que Yarn se utiliza en Hadoop:
1) Para permitir que múltiples motores de procesamiento de datos como MapReduce, Spark y Storm se ejecuten en el mismo clúster de Hadoop para procesar datos de manera más eficiente.
2) Para mejorar la utilización del cluster permitiendo que diferentes tipos de trabajos se ejecuten en diferentes nodos del cluster dependiendo de los recursos requeridos por cada trabajo.
3) Mejorar la escalabilidad de Hadoop al permitirle manejar mayores cantidades de datos y más trabajos concurrentes.
4) Proporcionar una experiencia de usuario más consistente, permitiendo a los usuarios enviar trabajos al clúster utilizando una interfaz común, independientemente del motor de procesamiento de datos subyacente.
¿Puede Hadoop funcionar sin YARN?
Sí, Hadoop puede funcionar sin YARN. Sin embargo, YARN proporciona una serie de ventajas que hacen que sea la forma recomendada de ejecutar Hadoop.
YARN es un gestor de recursos que permite una utilización más eficiente de los recursos del clúster. Proporciona un control de recursos de grano fino: YARN permite un control más granular sobre los recursos, lo que hace posible ejecutar múltiples tipos de aplicaciones en un solo clúster.
Mejora del rendimiento: YARN proporciona un mejor rendimiento que la antigua arquitectura MapReduce 1.0.
Mayor flexibilidad: YARN permite ejecutar una variedad de aplicaciones en un clúster Hadoop, no sólo trabajos de MapReduce.
¿Qué es YARN y sus tipos?
YARN (Yet Another Resource Negotiator) es una tecnología de gestión de clústeres introducida en Hadoop 2.0 que permite ejecutar diferentes tipos de aplicaciones de procesamiento de datos en una única plataforma. YARN está diseñado para mejorar la escalabilidad y la flexibilidad de Hadoop desacoplando la gestión de recursos de la programación/monitorización de trabajos.
Las aplicaciones YARN se dividen en dos tipos:
1. Servicios de larga duración: Son aplicaciones persistentes que proporcionan servicios a los clientes (por ejemplo, HDFS Namenode, YARN ResourceManager).
2. Aplicaciones interactivas: Estos se utilizan normalmente para el procesamiento por lotes o consultas ad-hoc (por ejemplo, Hive, Impala, Spark).
YARN está compuesto por los siguientes componentes:
1. 1. ResourceManager: El ResourceManager es el componente central de YARN. Es responsable de asignar recursos a las aplicaciones y gestionar los recursos del clúster.
2. NodeManager: El NodeManager es un demonio por nodo que es responsable de los contenedores, la supervisión de la utilización de los recursos (cpu, memoria, disco, red), y la presentación de informes de esta información a la ResourceManager.
3. ApplicationMaster: El ApplicationMaster es un componente por aplicación que es responsable de negociar los recursos desde el ResourceManager, lanzar contenedores en NodeManagers, y monitorear el progreso de la aplicación.
4. Contenedor: Un contenedor es una unidad lógica de una aplicación que se ejecuta en un solo nodo. Un contenedor puede ser considerado como una máquina virtual ligera. Tiene su propia asignación de recursos (cpu, memoria, disco, red), contexto de seguridad y variables de entorno. Yarn es un sistema operativo. No, Yarn no es un sistema operativo. Yarn es un gestor de paquetes de JavaScript, que fue creado por Facebook para ayudar a los desarrolladores de JavaScript a gestionar las dependencias dentro de sus aplicaciones de JavaScript.