La semana pasada utilicé todas las Raspberry Pi que tenía para construir un clúster de computación HexaPi de seis nodos.
Desde entonces me han preguntado varias veces: ¿para qué sirve? Así que voy a echar un vistazo a la última parte de los Proyectos Raspberry Pi – Construir un OctaPi, y añadir un sencillo ejemplo propio también.
Oh, y he añadido un servidor Raspberry Pi más al clúster, sin dejar de respetar mi regla de ‘no hay dos servidores iguales’, por lo que en realidad es ahora un clúster HeptaPi de siete servidores. Al final de este post añadiré una descripción de parte del nuevo hardware que he adquirido y utilizado para este proyecto.
Primero, ¿para qué sirve? Tengo un ejemplo sencillo de mi propia experiencia. Viajo bastante, me gusta hacer muchas fotos con una cámara réflex digital, y a menudo hago panorámicas de varias imágenes (los Alpes suizos son un tema especialmente bueno para este tipo de fotografía). Cuando llego a casa, utilizo la cosedora de fotos panorámicas de hugin para fusionar esos lotes de fotos individuales en vistas panorámicas mucho más grandes.
Si hago este procesamiento de panorámicas en un solo ordenador, tengo que hacer la «programación» yo mismo — es decir, tengo que estar pendiente, y cuando una panorámica está terminada tengo que empezar la siguiente.
Si me pongo un poco más ambicioso, puedo configurar un programa de control por lotes y luego poner en cola los grupos de imágenes que se van a fusionar, pero todavía sólo se hacen uno tras otro. Si tengo más ordenadores disponibles para la tarea, entonces tengo que hacer yo mismo la distribución de las imágenes y la recuperación de las panorámicas, y de nuevo tengo que hacer yo mismo la «programación» en cada ordenador. De cualquier manera, es un proceso relativamente tedioso y que consume tiempo, y desafortunadamente a menudo me encuentro sin tiempo (o sin paciencia) antes de que todas mis imágenes hayan sido procesadas.
Con el cluster HeptaPi, podría configurar un procesador por lotes, basado en cualquiera de los ejemplos de Python incluidos en el proyecto de cluster OctaPi, y luego instalar hugin en cada uno de los servidores del cluster. Entonces podría alimentar grupos de imágenes al procesador por lotes, que los distribuiría a los servidores del clúster para su procesamiento, y recibiría la imagen panorámica terminada como retorno.
Mi inversión en esto sería escribir el programa de control por lotes específico de la aplicación, y luego identificar los grupos de imágenes para ser procesados juntos. Una vez hecho esto, el tiempo real requerido hasta que tuviera todas mis encantadoras imágenes panorámicas se reduciría drásticamente – ¡y podría reducirlo aún más simplemente añadiendo más sistemas Raspberry Pi al clúster en cualquier momento!
Una respuesta más general a la pregunta de para qué es bueno el Pi Cluster es: cualquier tipo de trabajos o tareas que puedan dividirse en un número de piezas independientes. Nótese que sólo las tareas en sí tienen que ser independientes — los resultados también pueden serlo, como en el caso de mis fotografías panorámicas, pero también puede ser que el resultado de cada tarea contribuya a algún resultado mayor. En ese caso, los resultados pueden ser recogidos en el sistema cliente, y luego procesados (tal vez incluso enviándolos de nuevo como una nueva tarea) para producir un resultado final.
Por supuesto, este no es el único uso de los ordenadores en clúster. Hay cosas como la redundancia y la tolerancia a los fallos, basadas en el hecho de que su cliente está enviando el trabajo a tantos servidores como estén disponibles; si un servidor se retira para el mantenimiento (o se bloquea, o lo que sea), su procesamiento todavía puede continuar en los servidores restantes en el clúster.
Todos estos son conceptos que se aplican típicamente a los sistemas de clúster mucho más grandes y sofisticados – incluso hasta los centros de datos enteros de servicios en la nube. Pero mi punto aquí es que usted puede construir un clúster simple usando sistemas Raspberry Pi de muy bajo costo, y no sólo ganar conocimiento y experiencia muy útil al hacerlo, sino también terminar con un recurso útil cuando haya terminado.
Ahora, pasando al hardware que he utilizado para este proyecto. He mencionado que he añadido otro servidor al clúster desde que publiqué el escrito original. Eso sucedió porque estaba navegando por el sitio web Pi-Shop.ch y noté la Raspberry Pi 2 v1.2.
Las especificaciones generales son las mismas que la Pi 2 original, pero el nuevo modelo utiliza la misma CPU que la Pi 3 (pero con una velocidad de reloj más baja). No es gran cosa, y probablemente ni siquiera sea terriblemente interesante para la mayoría de la gente porque la Pi 3 es mucho más popular ahora de todos modos. Pero fue suficiente para motivarme a conseguir una y añadirla al clúster.
Lo importante a tener en cuenta sobre esta adición fue que no tuve que hacer nada al sistema cliente (controlador), ni a ninguno de los otros servidores. Simplemente preparé la nueva Pi 2 exactamente de la misma manera que había preparado las otras, y luego la conecté a la red inalámbrica dedicada del Pi Cluster. La siguiente vez que inicié un trabajo en el cliente, se dio cuenta de que el nuevo servidor estaba disponible y empezó a utilizarlo junto con todos los demás.
También mencioné en el proyecto original que no tenía suficientes adaptadores USB wi-fi para conectar todos mis sistemas Pi, y por supuesto añadir la nueva Pi 2 significaba que necesitaba un adaptador para esa también. El Pi-Shop tiene un par de nuevos adaptadores en la lista, así que pensé que esta era una buena oportunidad para probarlos.
El criterio más importante a tener en cuenta al comprar un adaptador USB wi-fi para una Raspberry Pi es que usted quiere estar seguro de que funciona correctamente fuera de la caja.
Sé que puede parecer una tontería, pero es exactamente lo contrario del enfoque que adopto al comprar dichos periféricos para el resto de mis ordenadores portátiles y de sobremesa con Linux. Estoy asumiendo que la mayoría de la gente está comprando y utilizando los sistemas Raspberry Pi para algún propósito específico – ya sea la educación, la afición o para algún proyecto específico o el uso del dispositivo. Por supuesto, es posible conseguir que casi cualquier adaptador USB funcione con casi cualquier distribución de Linux, pero a menos que quieras arriesgarte a tener que gastar una cantidad significativa de tu tiempo de escuela/afición/trabajo para configurar los controladores, simplemente toma el camino más fácil y asegúrate de comprar un adaptador que ya ha sido probado y funciona.
La forma más sencilla de estar seguro de esto es comprar a un distribuidor autorizado de Raspberry Pi, y asegurarse de que dice en su página web que el adaptador que está comprando ha sido verificado para trabajar con el Pi.
El primero que probé fue el dispositivo Miniature WiFi (802.11b/g/n) 150Mbps. Creo que en realidad se trata del Módulo WiFi Miniatura de Adafruit, aunque las fotos no se ven igual — tal vez sea un empaque personalizado o algo así. En cualquier caso, el que yo recibí se parece a la foto que se muestra aquí, y efectivamente funcionó nada más sacarlo de la caja, como se anunciaba. Cuesta sólo 9,90 francos suizos (unos 8,99 euros).
Está basado en un chip Realtek RTL5370, y tiene un LED azul de encendido/enlace/estado.
Como estaba en modo «probar cosas nuevas», y me di cuenta de que había otro adaptador wi-fi USB con mayor rendimiento ofrecido en la Pi-Shop, decidí probarlo también. Se llama simplemente ‘USB WiFi Adapter for Raspberry Pi (300Mbps)’, y se parece a la imagen de la derecha.
Es considerablemente más caro, 23,90 francos suizos (unos 21,70 euros/ 19,40 libras/ 25 dólares), así que probablemente merezca la pena pensárselo mejor antes de comprarlo que el anterior. Recuerda que estamos hablando de sistemas Raspberry Pi, y que no son famosos por la velocidad y eficiencia de sus conexiones USB. Así que la diferencia de velocidad que es prácticamente la única ventaja de este adaptador, podría no ser significativa en el uso real que hagas del dispositivo.
Este dispositivo está basado en el chip Realtek 8192SU, y también tiene un LED de encendido/enlace/estado.
La última pieza nueva de hardware para este proyecto es la que creo que resultará más útil en general: el nano router inalámbrico TP-Link TL WR802N.
Este dispositivo de bajo coste (alrededor de 30 CHF/€27/£24/$32) es muy pequeño y ligero, e incluye una serie de modos predefinidos y preconfigurados para usos comunes. Yo lo utilicé para configurar una WLAN aislada sin conexión a Internet (modo router), pero por supuesto puede proporcionar conectividad a Internet a través de su conector de red por cable RJ45 (modo punto de acceso), o a través de una conexión WISP inalámbrica (modo punto de acceso).
También se puede utilizar para complementar una red wi-fi existente (modo extensor de alcance), o como un adaptador wi-fi para un dispositivo que sólo tiene una conexión de red por cable (modo cliente).
El WR802N viene con su propio adaptador de corriente, pero también puede alimentarse con un adaptador de corriente para Raspberry Pi (u otro cargador MicroUSB para smartphones), o incluso conectándolo a un puerto USB de un ordenador.
Mis primeras impresiones sobre este dispositivo han sido muy positivas, y espero que sea muy útil tanto en casa como cuando esté de viaje.
Cuando decidí construir el Pi Cluster, esperaba que fuera una cosa interesante del tipo gee-whiz, pero también supuse que lo volvería a desmontar en poco tiempo. Ahora que está en marcha, me encuentro con que estoy pensando en otras formas interesantes de utilizarlo, y de mejorarlo.
Recuerda que no tienes que tener un gran número de sistemas Raspberry Pi para montar uno — dos servidores y un cliente son suficientes para empezar. Pero cuidado, una vez que lo tengas en marcha puedes encontrar que es una buena excusa para comprar más y mejores piezas para ampliarlo.
- Raspberry Pi: Cómo construí un clúster de computación al estilo OctaPi
- Raspberry Pi: Manos a la obra con Fedora 26
- Raspbian GNU/Linux: La nueva versión incluye una imagen x86 instalable
- Raspberry Pi Zero W, hands-on: Un nuevo miembro de la familia muy bienvenido
- Manos a la obra: Pantalla táctil de 7 pulgadas y carcasa de Raspberry Pi