Un cluster fatto in casa

E’ passato un poco di tempo dall’ultimo post, ma qui di casa in LidiMatematici abbiamo tentato un esperimento piuttosto ardito: realizzare un cluster basato sulla tecnologia pubblicata da Google. Abbiamo voluto provare a realizzare da zero un cluster Big Data, con l’intento di verificare se le promesse del paper di Google sono reali: è possibile costruire un server in cluster, usando componenti tecnologici di basso costo e tutta tecnologia open source?

La risposta è stata un sorprendente si, spendendo pure poco. Molto poco.

Per realizzare un cluster occorrono almeno tre computer: un master e due nodi, abbiamo quindi dovuto scegliere componenti che non costassero una fortuna, e la migliore opzione allo scopo è il Raspberry PI. Ecco la lista dei materiali:

– 3 raspberry PI Model 3
– tre schede SD, una da 128GB e du da 64GB
– tre alimentatori micro USB da almeno 2 ampere
– un network switch
– tre cavi di rete
– supporto in acrilico per cluster

Per un costo totale di poco inferiore ai 180€ abbiamo quindi reperito tutto il materiale occorrente. Questo è, ovviamente, solo l’inizio perché – assemblaggio a parte – la configurazione di un cluster hadoop da zero, su macchine relativamente risicate, non è stata proprio una passeggiata.

Che, poi, risicate si fa per dire, perché ogni Raspberry ha un processore da 1.3 Ghz su quattro core e 1Gb di RAM. Alla fine, il cluster complessivamente ha a disposizione 256GB di storage su disco SD, 3Gb di RAM e 12 core, non proprio minimali.

La configurazione di un giocattolino del genere, dicevamo, non è semplice. Tuttavia con un poco di accortezza siamo riusciti ad inserire diversi elementi dello stack Hadoop:
– Hue (il corrispettivo di Ambari)
– Hive
– MapReduce
– Sqoop
– Spark
– HBASE
– Yarn
– HDFS

A corredo, abbiamo installato l’immancabile MySQL e MongoDB, nonché Scala. E scusate se è poco.

Questo post non ha chiaramente le intenzioni di essere una guida, perché il processo è piuttosto articolato e descriverlo sarebbe al di fuori delle finalità di questo blog, ma una panoramica sui risultati ottenuti merita decisamente.

Il cluster è stato realizzato su tre nodi, sul nodo master – dotato di scheda SD da 128Gb, gira tutta l’infrastruttura di controllo, nonché i processi principali dello stack hadoop (HDFS e Yarn). I dati sono ospitati invece nei due nodi worker.

Spark gira invece su tutti e tre i nodi, come da manuale, ed è in grado di parallelizzare i processi usando tutta la potenza di calcolo (si fa per dire) del cluster di raspberry PI, beneficiando di 12 core e 3 GB di RAM.

Il carico computazionale si è rivelato eccessivo per il nodo master, per cui è stato necessario spostare Hue, la componente di gestione web di livello più alto, cioé più prossimo all’utente finale, sul nodo 1, operazione che si è rivelata un filo più complessa del previsto, ma che – al netto di alcune configurazioni – ha dato buoni risultati.

A titolo di esempio abbiamo immaginato una applicazione aeronautica, per cui i dati della localizzazione GPS dei velivoli vengono trasferiti su cluster e qui elaborati. Una volta scaricata la traccia GPS in formato XML, questa è stata importata in Mysql, con un processo di caricamento ordinario. Da qui, è stata trasferita su HDFS mediante Sqoop, creando tabelle interrogabili con Hive. Il monitoraggio del processo di caricamento è stato eseguito mediante Yarn.

Non si può certo dire che tutto il giro sia stato veloce, data l’esiguità delle risorse hardware, tuttavia l’architettura ha funzionato senza incertezze, dimostrando – se mai ce ne fosse stato il bisogno – che oggi è possibile realizzare una soluzione completa di Big Data mediante open source e hardware di costo contenuto.

Esattamente quanto promesso da Google.

Share
Questa voce è stata pubblicata in Scienza oggi e contrassegnata con , , , , , , , , . Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *