MapReduce – Episodio 1: Un approccio strategico alla scelta della pizza

Uno dei più importanti trend tecnologici degli ultimi anni è sicuramente quello relativo ai fantomatici Big Data, ossia quantità di dati così smodate da renderne l’interpretazione molto difficile con metodi convenzionali. Un dato una volta elaborato e/o contestualizzato diventa un’informazione: sono le informazioni a interessarci, non tanto i dati. Per capire la differenza tra dati e informazioni basta pensare a un’affermazione come “Fuori ci sono trenta gradi“: si tratta di un dato di poco interesse se non viene specificato il contesto, vuol dire tutto e niente perché non mi viene detto se la temperatura sia entro un range di accettabilità. Viceversa, se dico che “Fuori ci sono trenta gradi centigradi, siamo in Lapponia ed è il ventidue dicembre e ieri ce n’erano venti sotto zero” allora diventa un’informazione e vale la pena tenerla in considerazione, anche se probabilmente l’Armageddon è alle porte e di informazioni sul clima ce ne faremo ben poco.

La nostra civiltà iperconnessa produce una mole di dati davvero notevole: si stima che nel 2020 verranno prodotti 40 Zettabyte di dati al giorno (ovvero 43 trilioni di Gigabyte: un disco Blu-ray tiene circa 200 Giga, quindi uno Zettabyte corrisponde circa a un miliardo e mezzo di copie della trilogia de Il Signore degli Anelli). Non tutti questi dati sono chiaramente significativi ma in questo flusso costante di byte si nascondono autentici tesori per chi sa come cercarli: questi cercatori di tesori prendono il nome di Data Scientist, gente che sa come, dove e cosa cercare per dare un senso a tutte le foto di gatti, i video di bambini che cantano e le battute riciclate che ogni giorno postiamo sui Social. Uno dei diversi metodi usati nella Data Science è il modello di programmazione MapReduce, reso celebre da Google, che oggi cercherò di spiegarvi nel modo migliore che conosco: parlando di pizza.

Immaginiamo di entrare in pizzeria, sederci, ordinare da bere (siamo in Lapponia ma ci sono trenta gradi, abbiamo sete). Apriamo il menù: supponiamo ora che la pizzeria lappone sia gestita da una verace famiglia di emigranti napoletani, onesti lavoratori che in oltre trent’anni di onorata carriera hanno perfezionato ben sessanta tipi di pizze diverse, dalla più classica delle margherite fino alla pizza alla renna affumicata (esiste sul serio). Non so voi ma io ho un serio problema a scegliere che pizza ordinare quando ce ne sono dieci, figuriamoci con sessanta. Assumiamo che le sessanta pizze siano elencate in ordine sparso su sei pagine da dieci pizze l’una: un ipotetico me stesso alternativo ignaro del modello MapReduce entrerebbe nel panico, iniziando a sfogliare il menù avanti e indietro vittima dell’indecisione, senza criterio. E gli scriteriati, si sa, finiscono per ordinare la pizza sbagliata. L’approccio da Data Scientist invece permette di fare ordine tra i dati, trasformarli in informazioni e compiere una decisione oculata: i Data Scientist ordinano sempre la pizza migliore.

Data (Scientist)
Non a caso Data era un Scientist

Vediamo che passi compie l’Arturo smart che conosce la Data Science, da qui in poi noto come Smarturo:

  1. Recluta cinque amici e prende un bloc-notes (chi non ne ha uno quando va in pizzeria?);
  2. Definisce delle macro-categorie in cui catalogare le pizze (es. pizze light, pizze medie, pizze difficili da digerire, spazzatura) e scrive il nome di una categoria su ciascuna pagina del bloc-notes;
  3. Strappa le pagine del menù e consegna una pagina a ciascun amico (poi dovremo litigare con il cameriere ma non importa, tanto siamo numerosi);
  4. Lui e ciascuno dei suoi amici analizzano una pagina di menù a testa, scrivendo ciascuna pizza sul foglio che riporta il nome della macro-categoria appropriata (es. la pizza ortolana andrà tra le pizze light, la pizza hawaiiana sicuramente nella spazzatura);
  5. Essendo un tipo ordinato, Smarturo prende ciascuna pagina e ne riscrive il contenuto in ordine alfabetico (o secondo un altro criterio che gli sembra appropriato).

A questo punto, il nostro amico Smarturo ha a disposizione un menù alternativo, molto più leggibile dal suo punto di vista con il quale può fare un ragionamento tipo il seguente: “Oggi ho voglia di una pizza di quelle davvero pesanti, tanto l’Armageddon è prossima e non ho impegni per domani, e vorrei che ci fosse sopra della carne“. Smarturo dovrà solo cercare la pagina del menù rimappato corrispondente alle pizze pesanti, sceglierne una con della carne (magari proprio quella con la renna affumicata) e attendere felice la fine del mondo lassù in Lapponia con la sua pizza e i suoi amici. Potrebbe fare tante altre cose: stimare quante pizze ci siano in ciascuna categoria, creare un grafico con il prezzo sulle ordinate e il numero di ingredienti sulle ascisse, elaborare insomma il menù a piacimento con relativa facilità.

Questo è in soldoni il sistema MapReduce, con qualche imprecisione e molte semplificazioni: prendo una mole eccessiva di dati caotici, li divido in fette di grandezza ragionevole, assegno una fetta a un processore che lavora in parallelo con altri N (i quali prendono il nome di Mapper e nella similitudine di prima erano gli amici reclutati per lavorare in parallelo con il buon vecchio Smarturo). I Mapper analizzano la loro fetta di dati, fanno il cosiddetto shuffle (ovvero infilano un dato dopo l’altro in una certa categoria precedentemente definita) e passano la palla ai Reducer. I Reducer sono altri processori che mettono un po’ d’ordine ai dati categorizzati dai Mapper: ognuno di loro è dedicato a una delle categorie in cui abbiamo deciso di dividere i nostri dati, e ciascuno contribuisce a fornire in uscita un resoconto ordinato, contestualizzato e di semplice fruizione: in pratica, Mapper e Reducer prendono molti dati e li trasformano in informazioni.

mapreduce.png
Una rappresentazione grafica del MapReduce

A che serve questa roba nella vita reale? A un sacco di applicazioni, ad esempio a fare sentiment analysis e scoprire cosa gli utenti Twitter pensino di un determinato prodotto, personaggio o brand, cosa molto utile nel marketing ma anche in politica. Viene inoltre usata nel machine learning, in sanità e in molti altri contesti, anche grazie alla sua implementazione open source più famosa, Hadoop, su cui twittavo qualche giorno fa. Pare che in Lapponia il MapReduce sia perfino usato per scegliere la pizza: meraviglie della Data Science.

Ora per favore fate partire questa canzone, e allontanatevi lentamente in direzione di una pizzeria. Ricordate di portarvi qualche amico e un bloc-notes.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...