Apache YARN Configuración

Apache Hadoop por defecto tiene configurado el YARN cuando hacemos una instalación como la que hemos realizado en este blog, por defecto hadoop toma todos los recursos disponibles, limitándonos a lanzar un Job en nuestro clúster aunque tengamos más recursos disponibles para más jobs, esto se puede solucionar los archivos correspondientes al YARN en los archivos de configuración de Hadoop encontraremos dos archivos importantes, el yarn-site.xml y el mapred-site.xml.template en el yarn-site.xml encontraremos propiedades relacionadas con el manejo de los recursos físicos (RAM, cores, etc) y en el mapred-site.xml encontraremos lo relacionado con la memoria virtual, ¿A qué me refiero con la memoria virtual?, a todos los recursos de la JVM.



Primero configuraremos el archivo yarn-site.xml por default viene sin ninguna propiedad, como mencione este archivo controla los recursos físicos para cada container, a continuación agregaremos las siguientes propiedades de las siguientes imágenes.



Estas propiedades en palabras dirían algo como lo siguiente:

Hadoop deberá usar a lo más 6GB de la memoria RAM disponible en cada nodo y a lo más 2 virtual cores, como recursos máximos, además cada contenedor tendrá 2 GB de la memoria RAM y 1 virtual cores como mínimo y 6GB de memoria RAM y 2 virtual cores como recursos máximos.
Esto quiere decir que si tenemos una computadora con 36 GB en memoria RAM y 12 virtual cores podrá levantar 6 contenedores al mismo tiempo o en otras palabras, podrá realizar 6 Job al mismo tiempo.
Con este archivo configurado ya puede funcionar de forma buena nuestro clúster de yarn, si se quiere tener un poco más de control en cuanto al ciclo de vida de un MR el archivo mapred-site.xml nos ayudará para esto como veremos a continuación.

Estas propiedades son suficientes para configurar el yarn de una manera mínima y óptima, los valores de las propiedades varían de acuerdo al hardware que se tenga por cada nodo, los valores no son estándares y deberán configurarse de acuerdo al hardware disponible en cada nodo, para ver más propiedades correspondientes a este componente se puede ver en el siguiente link:
https://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

El siguiente es el archivo mapred-site.xml este archivo no esta contenido por default archivo, pero podemos obtenerlo del archivo mapred-site.xml.template una vez que tenemos el archivo procederemos a configurarlo para terminar con la configuración del  YARN





En este archivo como podemos ver configuramos más a detalle el ciclo del MR, aquí le estamos dando 1 GB de Memoria RAM al Application Master y en heap-size le damos el 80% de la memoria asignada que es 768 MB, es el mismo caso para el Map el cual utilizará 4GB de la memoria RAM y su heap size es el 80%, en el yarn-site.xml definimos un limite de recursos de 6 GB y llevamos 5GB consumidos el último GB es para el Reduce y de esta manera se configura más a detalle un YARN, esta claro que con esta configuración solo corre un Job en nuestro clúster que es pseudo distribuido y que solo tiene 8 GB de RAM.

Si estos pasos se realizan en un clúster de más de 1 nodo, la siguiente propiedad se debe agregar también al archivo de yarn-site.xml, donde definimos en que host se encontrará el ResourceManager.



Una vez realizada la configuración del archivo yarn-site.xml y del mapred-site.xml procederemos a borrar toda la instancia del namespace previamente creada en el capítulo de Instalación de Apache Hadoop para eso nos dirigimos a la carpeta /usr/local/hadoop_store/hdfs/ dentro veremos una estructura como la siguiente:

Procederemos a borrar las tres carpetas con el comando rm -R * ó podemos borrarla una por una
rm -R datanode/, rm -R namenode/ y rm -R dfs/ ó bien podemos eliminar la carpeta del directorio anterios que tiene por nombre hdfs con rm -R hdfs/, esto se debe por que nuestra nueva instancia de hadoop podrá usar YARN personalizado.


Una vez realizado este paso procederemos a darle formato de nuevo a nuestra nueva instancia de namespace de un nuevo namenode con el comando hdfs namenode -format y volverá a generar las carpetas anteriores, obviamente con nueva información.

Si el proceso se hace para un clúster de más de un nodo, estas carpetas deberán borrarse de cada nodo, ya que cada nodo debe contenerlas para que funcione hadoop.

Terminando esto levantamos hadoop y una vez hadoop este arriba, procederemos a levantar el YARN
para esto tenemos dos comandos, uno para levantar el ResourceManager y otro para levantar NodeManager con los siguientes comandos:

  • ResourceManagaeryarn-daemon.sh start resourcemanager
  • NodeManageryarn-daemon.sh start nodemanager
Una vez terminando de ejecutar los comandos anteriores con el comando jps del openjdk vemos los procesos de java vivos en ese momento y podremos ver al proceso ResourceManager y NodeManager.



Si el proceso se hizo para un clúster con más de un nodo, el comando para levantar el NodeManager deberá ejecutarse en cada uno de los nodos.

Como conclusión cabe mencionar que el YARN es una parte importante a la hora de levantar un clúster, ya que nos facilita el manejo de nuestro clúster y nos permitirá correr Jobs al mismo tiempo, teniendo una doble paralelización.


Comentarios

Entradas más populares de este blog

Manejo Apache Hive

Replicación y Formas de Paralelización Apache Hadoop

Asignación de un líder Zookeeper