“CRUZ”: un Clúster portátil de bajo costo usando Raspberry Pi

Page 1

“CRUZ”: un Clúster portátil de bajo costo usando Raspberry Pi “CRUZ”: a portable Cluster of low cost using Raspberry Pi César Martín Cruz Salazar Universidad Nacional de Ingeniería, Av. Túpac Amaru Rímac Lima. Resumen Este paper es sobre la construcción de un clúster (agrupamiento de placas computadores) portátil formado de 11 nodos más un nodo para el maestro. Utiliza en total 12 placas Raspberry pi que se unieron formando una red con acceso de cada uno a Internet. El equipo en su conjunto se configuró instalando software apropiado, de tal forma que trabajen en colaboración procesando una tarea particionada entre todos los nodos utilizando librerías MPI. Permitiendo así desarrollar y probar programas en paralelo. El objetivo de este equipo es que se utilice como una herramienta para la enseñanza en los cursos de Programación Paralela y Distribuida. Lo que proporciona un punto de partida de bajo costo para inspirar y capacitar a los estudiantes a entender y aplicar la computación de alto rendimiento y manipulación de datos para hacer frente a la ingeniería compleja y los desafíos científicos. Descriptores: clúster, raspberry pi, programación paralela, distribuida, MPI, hadoop, educación bajo costo. Abstract This paper is about the construction of a cluster (grouping of computers boards) Portable formed of 11 nodos plus the master node. It uses a total of 12 Raspberry Pi boards that joined to form a network with each access to the Internet. The equipment as a whole was configured by installing appropriate software, so working in a partitioned task processing in collaboration between all nodes using MPI libraries. Thus allowing developing and testing parallel programs. The purpose of this equipment is to be used as a tool for teaching courses in Parallel and Distributed Programming. Providing a starting point inexpensive to inspire and enable students to understand and apply high performance computing and data handling to tackle the complex engineering and scientific challenges. Keywords: cluster, raspberry pi, parallel computing, distributed, MPI, hadoop, education low cost. 1 Introducción 1.1 Contexto y trabajo relacionado En los inicios del proyecto, empecé revisando videos en youtube [1] y [2] que me dieron ideas de cómo construir un clúster. Es así que en este artículo presentamos nuestro clúster "Cruz", que fue montado usando 12 placas Raspberry Pi interconectados con enlaces Ethernet de 100 Mbtis/s, uno de los racks de 7 placas se muestra en la Figura 1. Comprende de 2 ventiladores para refrigeración que son necesarios porque cada placa RPI se encuentra overclockeado a 1 Ghz. Estas cualidades, junto con su peso ligero, pequeño volumen, la hacen eminentemente adecuado para una serie de aplicaciones que demandan la programación paralela y que ejecuta un clúster convencional que debido a sus altos costos y los requisitos especiales de infraestructura su uso para la enseñanza resulta poco adecuado. Fue una gran fuente de inspiración el desarrollo de una supercomputadora basado en RPI realizado por el Prof. S. J. Cox en la Universidad de Southampton del Reino Unido [3].

Considerar baja potencia, la computación intensiva de datos está llegando a ser una área de gran interés, tanto en lo académico como en la industria. Aplicaciones ricas en datos son cada vez más corriente, los proveedores de infraestructura están prestando considerable atención tanto a la energía consumida por el hardware computacional y la capacidad de enfriamiento que esto impone. La industria del hardware está ofreciendo más servidores de bajo consumo energético, a menudo usando CPUs de bajo consumo, y existe un creciente interés en el uso de chips de bajo consumo de arquitecturas alternativas tales como ARM en el centro de datos; empresas como Calxeda se han fundado en torno a estos desarrollos. Por otra parte, "Parallela: Un supercomputador para Todos" del proyecto Adapteva [4], recientemente logró reunir suficiente financiamiento comunitario que le permitirá lograr el objetivo de democratizar la computación de alto rendimiento mediante la producción de placas 1


compactas basados en un conjunto escalable de procesadores RISC sencillas acompañadas de una CPU ARM. En el centro de supercomputadoras de San Diego [5] usan un clúster “METEOR” basado en RPIs para la enseñanza de la programación paralela.

permite su fácil manipulación y son una clase de computadores de una única placa. Cuentan con 512 Mbytes de RAM, un sistema sobre un Chip Broadcom BCM2835, que integra un procesador de 700MHz ARM1176JZF RISC, un GPU Broadcom VideoCore IV con HDMI y salida de vídeo compuesto, una DSP para audio, y un controlador USB. También, un adaptador para puerto Ethernet externo de 10/100 Mbits, y un adaptador de dos puertos USB 2.0. El almacenamiento local se realiza a través de una tarjeta de memoria SD (Secure Digital) que se coloca en una ranura acondicionada para la tarjeta de memoria, y hay varios otras interfaces como buses I2C y SPI, UART y ocho pines GPIO. Cada placa RPI se alimenta con una fuente de 5 voltios que son suministrados por una fuente switching de computadora PC y adaptadores de voltaje cada uno con dos sockets USB.

Fig1. Una de las torres del Clúster “Cruz” 2 El presente trabajo El clúster que presentamos en este trabajo combina los elementos no convencionales de la utilización de procesadores ARM de bajo costo y de bajo consumo de energía, conectados usando Ethernet, y almacenamiento flash, disponiendo del apoyo tradicional de tecnologías como MPI sobre la cual muchas aplicaciones de supercomputación son construidas. Con un tamaño global muy compacto, peso ligero, nuestro clúster es ideal para propósitos educativos y de demostración. La estructura del trabajo es la siguiente: en la Sección 3 se dan las especificaciones del clúster y sus nodos, describiendo su hardware y software. En la Sección 4 dirigimos nuestra atención a los resultados de programas en paralelo ejecutados en el clúster. Así como otros programas muy importantes para un clúster. Luego, finalmente escribimos la conclusión del trabajo, agradecimientos y referencias.

Fig2. El Clúster “Cruz” 3.2 Software Corremos el sistema operativo Raspbian, que es una versión optimizada de la distribución Debian GNU / Linux para la Raspberry Pi. Para ello hemos preparado una tarjeta SD(MicroSD) con una imagen descargada de la Fundación Raspberry Pi, y personalizamos esta instalación añadiendo software necesario para ejecutar programas en paralelo, esta finalmente viene hacer la imagen del “maestro”. Finalmente hemos clonado esta imagen "maestro", a las tarjetas SD de los otros nodos. En una primera oportunidad se siguieron los pasos mencionados en la referencia [6] pero debido a que se cometieron errores se prefirió seguir luego los pasos indicados en el libro de Andrew K. Dennis [7].

3 Descripción del Sistema. Proporcionamos una descripción de la arquitectura del clúster "Cruz", tanto en términos de sus componentes de hardware y de su entorno de software. 3.1 Hardware El Clúster "Cruz" se compone de 11 Raspberry Modelo B que actúan como esclavos y un Raspberry Pi modelo B+ que actúa como maestro. Estas placas son de tamaño de una tarjeta de crédito, lo cual

3.2.1 NFS server 2


Se instaló con el fin de poder compartir una carpeta /mnt/clusterpi entre todos los nodos y el nodo Maestro. Esta carpeta se utiliza para allí colocar nuestros programas que se van a ejecutar. 3.2.2 Creación de un usuario sin derecho de sudo Fig4. Ejecución de otro programa MPI en el Clúster “Cruz”

Se creó un usuario: mcruz y password: mcruz para que cualquier estudiante pueda ejecutar programas en el clúster sin que pueda borrar archivos del sistema e instalar nuevo software en el clúster.

4.2 Un simple gestor de colas Para evitar ejecutar en el clúster más de un programa de manera simultánea, es que se escribió un script que chequea si el clúster ya está corriendo un proceso. Si fuera así el proceso siguiente que quiere ejecutarse se pone en estado de espera hasta que finalice el anterior proceso. Ver figura 5.

3.2.3 IPs estáticos para todos los nodos Se cambió el contenido del /etc/network/interfaces por este otro:

archivo

en

auto lo eth0 #iface lo inet loopback #iface eth0 inet dhcp iface lo inet loopback iface eth0 inet static address 172.20.45.241 netmask 255.255.255.0 gateway 172.20.45.254 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

En todos los nodos. 4 Resultados y discusión

Fig5: Ejecutando a la vez en tres terminales el script “ejecuta_mpi…” ejecuta_mpi 4 /mnt/clusterpi/cpi2

4.1 Ejecución de un programa en paralelo

4.3 Programa de chequeo de conexión hecho con Crontab y python

En la siguiente figura 3 se muestra como se ejecuta un programa “cpi2” de cálculo del valor de “π” y el resultado obtenido considerando 11 nodos. El archivo se encuentra en la carpeta compartida /mnt/clusterpi. En la línea de comando ingresar:

Un problema muy común que apareció en el clúster fue la perdida de conexión de sus nodos. Entonces, me planteé desarrollar un programa en Crontab que chequee cada 20 segundos la conexión en Red de cada nodo. Que en caso pierda la conexión se reconecte en forma automática. El programa se hizo el Python(checkInternet) y chequea la conexión con Google, si se pierde manda a reiniciar el nodo.

mpiexec -f pifile -n 11 /mnt/clusterpi/cpi2

4.4 Programas adicionales desarrollados en Python para monitoreo del clúster. En un clúster es necesario saber si todos los nodos se encuentran en red, antes de lanzar un programa a ejecutar. Para ello se hizo el programa “conectados.py” que chequea si los nodos se encuentran en Red. Se necesita saber también la temperatura de los nodos del clúster, entonces se desarrolló “temperaturas.py” para poder tener esta información.

Fig3. Ejecución de un programa MPI en el Clúster “Cruz” Ejemplo de ejecución de otro programa “icpi” con su resultado indicado, ver figura 4:

3


clústeres y al profesor Glen Rodríguez porque se animó a probar el clúster en su curso haciendo así el control de calidad del mismo. A los estudiantes Abraham Zamudio, Pavel Mendoza Villafane, Jean Pierre Huaroto Chavez y Diego Berrocal Chinchay porque en alguna etapa del desarrollo del Clúster tuvieron cada uno un aporte valioso. Finalmente a mis alumnos del curso CC571 ciclo 2014 – II, por la ejecución del proyecto de Crontab. 7 Referencias Fig5. Ejecución del programa “conectados.py”. en el Clúster “Cruz”

[1]

[2]

[3] [4]

[5] Fig5. Ejecución del programa “temperaturas.py”. en el Clúster “Cruz” [6]

5 Conclusiones

[7]

Es un equipo de mucha utilidad a pesar que no tiene una gran potencia de procesamiento como se midió en una oportunidad comparándolo con una Pc con procesador Intel de última generación. La utilidad está en que además de permitirnos ejecutar programas en paralelo, observar la latencia y servir para la enseñanza, nos ha permitido poder considerar otros programas desarrollados en Python también importantes para un clúster como de monitoreo de su estado actual, monitoreo de las conexiones de los nodos en la red, de temperaturas de los nodos, etc. Se ha pensado en un futuro enriquecer el clúster con un software que permita ver el estado actual del clúster en la web. Así como la instalación de un gestor de colas avanzado que es ya motivo de otro artículo.

How To Make A Cluster Computer (Part 1) https://www.youtube.com/watch?v=1R0UgIgcb 5g How To Make A Cluster Computer (Part 2) https://www.youtube.com/watch?v=lHmFRlETT cQ Simon Cox, raspberry pi iridis lego supercomputer paper June 2013. Parallella un supercomputador para todo el mundo. https://www.kickstarter.com/projects/adapteva/ parallella-a-supercomputer-for-everyone SDSC Uses Meteor Raspberry Pi Cluster to Teach Parallel Computing. http://ucsdnews.ucsd.edu/pressrelease/sdsc_u ses_meteor_raspberry_pi_cluster_to_teach_pa rallel_computing Steps to make a Raspberry Pi Supercomputer http://www.southampton.ac.uk/~sjc/raspberrypi/ Andrew K. Dennis, Raspberry Pi Super Cluster (Noviembre 2013) 1 - 59.

E-mail: ce.cruz@gmail.com

6 Agradecimientos Quiero agradecer primero a Dios por permitirme ejecutar este proyecto, a la UNI y a la Facultad de Ciencias por el espacio otorgado. A los profesores Fidel Jara, Carmen Eyzaguirre por el aliento dado para terminar el proyecto. Al profesor Renato Tovar por sus consejos y sus conocimientos sobre

El autor de este paper junto al Clúster que construyó

4


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.