Apache Hadoop: Introducción a YARN

hadoopEn este artículo se va a realizar una introducción a YARN, el cual es básicamente una versión mejorada de la arquitectura MapReduce. Es por esto que también se le suele denominar MapReduce 2.0 (MRv2) y está disponible desde la distribución Hadoop 0.23 en adelante. Si se ha leído el tutorial sobre cómo ejecutar MapReduce en HDFS verá como la ejecución se realizó sobre dos versiones: La 1.X.X para MapReduce tradicional o versión 1 y otra con la versión 0.23.X para MRv2.

Motivación de YARN

YARN (Yet Another Resource Negotiator) nace para dar solución a una idea fundamental: Dividir las dos funciones principales del JobTracker (NameNode), es decir, tener en servicios o demonios totalmente separados e independientes la gestión de recursos por un lado y, por otro, la planificación y monitorización de las tareas o ejecuciones.

Como seguramente ya sepas a estas alturas, Hadoop HDFS es la capa de almacenamiento de datos para Hadoop y MapReduce era la capa de procesamiento de datos. Sin embargo, el algoritmo de MapReduce, por sí solo, no es suficiente para la gran variedad de casos de uso que vemos Hadoop se emplean para resolver. Con YARN, Hadoop ahora tiene un entorno de gestión de recursos y aplicaciones distribuidas dónde se pueden implementar múltiples aplicaciones de procesamiento de datos totalmente personalizadas y específicas para realizar una tarea en cuestión.

De esta separación surgen dos elementos:

  • ResourceManager (RM): Este elemento es global y se encarga de toda la gestión de los recursos.
  • ApplicationMaster (AM): Este elemento es por aplicación y se encarga de la planificación y monitorización de las tareas.

Esto deriva en que ahora, una aplicación, es simplemente un Job (en el sentido tradicional de MapReduce o MRv1) o un DAG de Jobs.

Arquitectura de YARN

A continuación se muestra un diagrama de la arquitectura de YARN para que se pueda entender de forma más clara.

yarn architecture

De este modo, el ResourceManager y el NodeManager (NM) esclavo de cada nodo  forman el entorno de trabajo, encargandose el ResourceManager de repartir y gestionar los recursos entre todas las aplicaciones del sistema mientras que el ApplicationMaster se encarga de la negociación de recursos con el ResourceManager y los NodeManager para poder ejecutar y controlar las tareas, es decir, les solicita recursos para poder trabajar.

Conclusión

A parte de la fabulosa idea que ha sido separar la gestión de la ejecución esto implica que MapReduce es, ahora, una de estas aplicaciones y, seguramente, en un futuro no muy lejano se verán otro tipo de aplicaciones como procesamiento gráfico o simples servicios coexistiendo junto con aplicaciones MapReduce en un clúster YARN.

Espero que este artículo les haya servido para entender mejor el concepto de YARN y el porqué de su necesidad.

Fuentes: Apache Hadoop YARN y Hortonworks

Share on FacebookTweet about this on TwitterShare on LinkedInShare on RedditShare on Google+Digg thisShare on TumblrPin on PinterestBuffer this pagePrint this pageEmail this to someone