Guest post: Azure e Hadoop: HDP incontra HDInsight #AzureOpenDay
Questo articolo è stato scritto da Andrea D’Orio , co-founder e CTO di Ecube, architetto certificato Hortonworks di soluzioni Hadoop 1.x e 2.x e primo docente italiano della Hortonworks University
Uno dei pochi assunti ancora validi è che le vie dell'informatica sono infinite. E' infatti quantomeno singolare che, dopo 25 anni di esperienza nel mondo Microsoft e dopo aver passato gli ultimi 5 nel vortice della gestione dei dati e dell'ecosistema Hadoop, mi ritrovi a parlare di creare ambienti ibridi on-premises / on-cloud sfruttando il meglio di Azure e della Hortonworks Data Platform in un ambito prettamente open source.
Ma facciamo un passo indietro.
Hadoop vede la luce a fine del 2004 e, dopo essere stato adottato da Yahoo, nel 2008 è pronto a spiccare sotto l'ala protettrice dell'Apache Foundation. L'adozione da parte delle più grandi società informatiche del mondo è quasi un passaggio obbligato.
Hortonworks nasce a giugno del 2011 con l'obiettivo di introdurre sul mercato la prima distribuzione veramente fully open source di Hadoop e di supportarla con servizi di assistenza e formazione. Un obiettivo quantomeno ambizioso il cui successo coglie di sorpresa l'intera comunità informatica: a dicembre 2013 Hortonworks ha più di 300 clienti con un ritmo di 75 nuovi customers ogni quarter. A gennaio 2014 viene indicata da Forrester come leader nelle soluzioni Hadoop Big Data e un anno dopo si quota in borsa con una capitalizzazione di 1 miliardo di dollari.
Tutto questo cosa centra con Microsoft?
I rapporti tra Microsoft e Hortonworks sono molto più stretti di quanto si possa pensare: la soluzione HDInsight di Microsoft è a tutti gli effetti il porting della Hortonworks Data Platform su Azure fortemente voluto e supportato da entrambe le società. E non solo: la Hortonworks Data Platform è l'unica distribuzione Hadoop a funzionare su ambienti Windows. Questo significa che Microsoft non solo crede fortemente in questa sinergia ma che ha basato l'intera sua strategia Big Data su HDP, posizionando la piattaforma Hortonworks al centro di un ecosistema complesso composto da strumenti tradizionali quali Microsoft SQL Server 2014, Windows Server 2012 R2, Office e Power BI e strumenti innovativi quali Azure Events Hub, Azure Data Factory, Azure Machine Learning e DocumentDB fino ad arrivare alla Microsoft Analytics Platform System.
Una strategia mirata a rendere fruibili le offerte on-premises e on-cloud in una soluzione ibrida ad alto valore aggiunto per l'utente finale.
Cosa è Hadoop?
Hadoop è un insieme di elementi che definiscono sinergicamente un sistema complesso in grado di immagazzinare ed elaborare in modo parallelo e distribuito un'enorme quantità di dati. Il file system distribuito di Hadoop si chiama HDFS (Hadoop Distributed File System) mentre il "sistema operativo di Hadoop" si chiama YARN (Yet Another Resource Negotiator). Sopra questi due layer agiscono tutti gli elementi dell'ecosistema (es: sistemi SQL on Hadoop, database NoSQL, framework in-memory come Spark, algoritmi di machine learning o job MapReduce). Hadoop può scalare virtualmente all'infinito (nell'ordine delle decine e centinaia di migliaia di nodi) e può gestire qualsiasi tipologia di dato, sia esso strutturato o meno. Inoltre Hadoop propone l'approccio rivoluzionario dello schema-on-read: è quindi possibile ridurre enormemente il tempo di acquisizione del dato costruendo uno schema solo in fase di lettura.
L'ultima buona notizia, ma non certo meno importante, è che Hadoop viene implementato su commodity hardware: non sono quindi necessari investimenti enormi per implementare un cluster per la gestione di centinaia di terabyte. Inoltre il costo a singolo terabyte raw è secondo solo a quello del cloud e di ordini di grandezza inferiore ai sistemi enterprise tradizionali quali NAS, MPP e SAN (secondo Juergen Urbanski, Board Member di Big Data & Analytics BITKOM, Hadoop fornisce uno storage scalabile a un costo del 5% rispetto alle altre alternative).
Il Data Lake
In generale il primo obiettivo di un cluster Hadoop è quello di create un Data Lake, cioè un'enorme contenitore di informazioni di tipo eterogeneo dal quale estrarre valore. Le potenzialità di un Data Lake sono molteplici: innanzitutto consente operazioni su larga scala e abilita gli utenti a esplorare, raffinare e arricchire i dati. Tutte le operazioni all'interno del Data Lake possono essere di tipo batch, interattivo o in real-time. In ultima analisi il Data Lake rappresenta la soluzione più efficace ed efficiente per trasformare i dati in valore per il business.
All'interno del Data Lake è possibile istanziare, sia internamente ad Hadoop sia esternamente utilizzando gli strumenti di ETL disponibili, Data WareHouse alimentati da subset di dati presenti su HDFS e dagli stessi DWH è possibile creare numerosi Data Mart con scopi ancora più specifici.
Le potenzialità del Data Lake non si fermano qui: è inoltre possibile abilitare utenti a effettuare Deep Learning o Data Exploration consentendo loro di "scoprire" nuove correlazioni e relazioni capaci di estrarre valore dai dati. I classici algoritmi di machine learning e predictive analytics sono tanto più precisi quanto è ampio il dataset sul quale vengono tarati. Sorprendentemente il Data Lake è il repository all'interno del quale le aziende stanno trovando nuove tipologie di correlazioni dalle quali estrarre valore: questo fenomeno è spiegabile con il fatto che prima non era possibile concentrare questo volume di dati all'interno di un unico strumento senza investimenti eccezionalmente consistenti.
Hortonworks e Microsoft per le soluzioni ibride
Se il valore aggiunto di una soluzione on-premises è ora chiaro, si può intuire quanto sia preziosa la possibilità di estendere il proprio cluster Hadoop con il servizio on-cloud HDInsight. Tralasciando il fondamentale utilizzo di HDInsight per la realizzazione di PoC o cluster di sviluppo, riducendo i tempi di deployment in modo drastico, la possibilità di espandere on-demand la capacità elaborativa del proprio cluster on-premises (bursting) aggiungendo fino a 32 nodi di HDInsight rappresenta un valore aggiunto importante.
In questo contesto l'esecuzione di "commoditized queries", cioè query la cui esecuzione non sarebbe economicamente conveniente in modalità on-premises ma che invece diventa estremamente vantaggiosa on-cloud, è solo uno dei possibili contesti operativi. E' infatti possibile utilizzare HDInsight (o quantomeno i Blob Storage di Azure) per archiviare ed effettuare operazioni di backup dei dati presenti on-premises: questa procedura, in unione con la precedente, riduce ulteriormente i tempi di "attivazione" della modalità ibrida avvicinando il momento di estrazione del valore dai propri dati. Una pratica ormai consolidata consiste nell'utilizzare uno o più Blob Storage posizionati all'interno di un account di archiviazione Azure per effettuare il salvataggio dei dati: quando si manifesta la necessità di istanziare un cluster HDInsight in modalità bursting sarà sufficiente agganciarlo all'account esistente per avere già i dati a disposizione.
Movimentazione dei dati
Se può sembrare complesso lo scenario dal punto di vista descrittivo tutt'altro appare dal punto di vista tecnico. Presupponendo la disponibilità di un cluster on-premises HDP, in versione 2.1 o 2.2, sarà sufficiente avere a disposizione un cluster HDInsight con un Blob Storage collegato. A questo punto l'unica operazione da compiere all'interno del cluster on-premises sarà l'aggiunta di una proprietà tramite Ambari, lo strumento di provisioning, configurazione e monitoraggio di HDP
fs.azure.account.key.<nomeblob>.blob.core.windows.net
al file di configurazione di HDFS inserendone come valore la chiave di accesso in lettura e scrittura al Blob Storage con il quale è stato istanziato il cluster HDInsight su Azure. Una volta fatto questo sarà possibile accedere in lettura e scrittura al cluster su Azure mediante il protocollo wasb secondo la sintassi
wasb://<nomecontainer>@<nomeblob>.blob.core.windows.net/
Istanziando lo storage on-cloud in questa modalità sarà possibile spostare dati verso il cloud con gli strumenti tipici di Hadoop (es: distcp), sfruttandone le caratteristiche che lo contraddistinguono: elaborazione distribuita sui singoli nodi e scalabilità. Un esempio di comando è il seguente:
hadoop distcp /tmp wasb://<nomecontainer>@<nomeblob>.blob.core.windows.net/
che provvederà a copiare l'intero contenuto della cartella /tmp su HDFS all'interno del container indicato.
Lo scenario tipico di utilizzo è rappresentato dalla necessità di eseguire elaborazioni sui propri dati che non è possibile implementare on-premises senza acquistare ulteriori nodi fisici. Istanziare un numero di nodi adeguato per il tempo necessario a ottenere il risultato nel più breve tempo possibile è il secondo passo. L'ultimo sarà quello di trasferire il risultato on-premises ed effettuare il de-provisioning del cluster HDInsight. Il tempo impiegato per la movimentazione dei dati verso HDInsight è solo una minima frazione di quello che sarebbe stato necessario eseguendo la query on-premises. In più il cluster HDP può continuare a operare senza interruzioni durante l'intera procedura.
Conclusioni
Una delle lezioni più importanti che ho imparato nel corso di questi anni è l'assoluta necessità di utilizzare gli strumenti informatici in modo corretto e all'interno del contesto idoneo al fine di raggiungere il miglior risultato possibile. Grazie a Microsoft e Hortonworks questo è oggi possibile: la Hortonworks Data Platform (HDP) è oggi la distribuzione fully open source più completa sul mercato e il servizio on-cloud HDInsight ne è il suo naturale complemento. L'adozione di entrambe le tecnologie può consentire non solo di raggiungere il risultato voluto nel più breve tempo possibile ma permette di estrarre valore dai propri dati in modo più veloce ed efficiente.
Andrea D’Orio