Sommario:
Video: Introduzione al corso Big Data streaming analytics 2024
All'inizio, i big data e R non erano amici naturali. La programmazione R richiede che tutti gli oggetti vengano caricati nella memoria principale di una singola macchina. I limiti di questa architettura si realizzano rapidamente quando i big data diventano parte dell'equazione.
Al contrario, i file system distribuiti come Hadoop mancano di solide tecniche statistiche ma sono ideali per ridimensionare operazioni e attività complesse. Le soluzioni di ridimensionamento verticale - che richiedono investimenti in costosi hardware di supercalcolo - spesso non possono competere con il ritorno del valore di costo offerto da cluster hardware distribuiti e di commodity.
Per conformarsi alle limitazioni in-memory, single-machine del linguaggio R, gli scienziati dei dati spesso dovevano limitare l'analisi solo a un sottoinsieme dei dati di esempio disponibili. Prima di approfondire l'integrazione con Hadoop, i programmatori di linguaggio R hanno offerto una strategia di scalabilità per superare le sfide in memoria poste da insiemi di dati di grandi dimensioni su singole macchine.
Ciò è stato ottenuto utilizzando sistemi di trasmissione di messaggi e paging. Questa tecnica è in grado di facilitare il lavoro su set di dati troppo grandi per essere archiviati nella memoria principale contemporaneamente; tuttavia, il suo approccio di programmazione di basso livello presenta una curva di apprendimento ripida per coloro che non hanno familiarità con i paradigmi di programmazione parallela.
Gli approcci alternativi cercano di integrare le capacità statistiche di R con i cluster distribuiti di Hadoop in due modi: interfaccia con i linguaggi di query SQL e integrazione con Hadoop Streaming. Con il primo, l'obiettivo è sfruttare le piattaforme di data warehousing SQL esistenti come Hive e Pig. Questi schemi semplificano la programmazione del lavoro Hadoop utilizzando istruzioni in stile SQL per fornire una programmazione di alto livello per la conduzione di lavori statistici su dati Hadoop.
Per i programmatori che desiderano programmare i lavori MapReduce in lingue (inclusa la R) diversa da Java, una seconda opzione consiste nell'utilizzare l'API di streaming di Hadoop. I lavori MapReduce inviati dall'utente subiscono trasformazioni di dati con l'ausilio di flussi e serializzazioni standard UNIX, garantendo l'input conforme a Java per Hadoop, indipendentemente dalla lingua originariamente immessa dal programmatore.
Gli sviluppatori continuano a esplorare varie strategie per sfruttare la capacità di calcolo distribuita di MapReduce e la capacità di archiviazione quasi illimitata di HDFS in modi che possono essere sfruttati da R.
L'integrazione di Hadoop con R è in corso, con offerte disponibili da IBM (Big R come parte di BigInsights) e Revolution Analytics (Revolution R Enterprise). Sono inoltre disponibili bridging di soluzioni che integrano la programmazione di alto livello e l'interrogazione dei linguaggi con Hadoop, come RHive e RHadoop.
Fondamentalmente, ogni sistema mira a fornire le capacità analitiche profonde del linguaggio R a gruppi di dati molto più grandi.
RHive
L'infrastruttura RHive funge da ponte tra il linguaggio R e Hive. RHive fornisce le ricche librerie e algoritmi statistici di R ai dati archiviati in Hadoop estendendo il linguaggio di query SQL-like di Hive (HiveQL) con funzioni specifiche di R. Attraverso le funzioni RHive, è possibile utilizzare HiveQL per applicare i modelli statistici R ai dati nel cluster Hadoop che sono stati catalogati utilizzando Hive.
RHadoop
Un altro framework open source disponibile per i programmatori R è RHadoop, una raccolta di pacchetti pensati per aiutare a gestire la distribuzione e l'analisi dei dati con Hadoop. Tre pacchetti di note - rmr2, rhdfs e rhbase - forniscono la maggior parte delle funzionalità di RHadoop:
-
rmr2: Il pacchetto rmr2 supporta la traduzione del linguaggio R in lavori MapReduce conformi a Hadoop (producendo codice MapReduce efficiente e di basso livello dal codice R di livello superiore).
-
rhdf: Il pacchetto rhdfs fornisce un'API del linguaggio R per la gestione dei file sugli archivi HDFS. Usando i rhdf, gli utenti possono leggere dagli archivi HDFS a un frame di dati R (matrice), e allo stesso modo scrivere i dati da queste matrici R nello storage HDFS.
-
rhbase: i pacchetti rhbase forniscono anche un'API del linguaggio R, ma il loro obiettivo nella vita è gestire la gestione del database per gli archivi HBase, piuttosto che i file HDFS.
Revolution R
Revolution R (di Revolution Analytics) è un'offerta R commerciale con supporto per l'integrazione R su sistemi distribuiti Hadoop. Revolution R promette di offrire prestazioni, funzionalità e usabilità migliorate per R su Hadoop. Per fornire analisi approfondite simili a R, Revolution R utilizza la libreria ScaleR dell'azienda: una raccolta di algoritmi di analisi statistica sviluppati appositamente per le raccolte di dati di grandi dimensioni su scala aziendale.
ScaleR mira a fornire una rapida esecuzione del codice del programma R su cluster Hadoop, consentendo allo sviluppatore R di concentrarsi esclusivamente sui propri algoritmi statistici e non su MapReduce. Inoltre, gestisce numerosi compiti di analisi, come preparazione dei dati, visualizzazione e test statistici.
IBM BigInsights Big R
Big R offre integrazione end-to-end tra R e l'offerta Hadoop di IBM, BigInsights, consentendo agli sviluppatori R di analizzare i dati Hadoop. L'obiettivo è quello di sfruttare i paradigmi di programmazione e codifica della programmazione di R, garantendo al tempo stesso che i dati operati rimangano in HDFS. I tipi di dati R fungono da proxy verso questi archivi dati, il che significa che gli sviluppatori R non hanno bisogno di pensare a costrutti MapReduce di basso livello oa qualsiasi linguaggio di scripting specifico di Hadoop (come Pig).
La tecnologia BigInsights Big R supporta più origini dati, inclusi file flat, HBase e formati di archiviazione Hive, fornendo al contempo l'esecuzione parallela e partizionata del codice R attraverso il cluster Hadoop. Nasconde molte delle complessità nei framework HDFS e MapReduce sottostanti, consentendo alle funzioni Big R di eseguire analisi complete dei dati, sia su dati strutturati che non strutturati.
Infine, la scalabilità del motore statistico di Big R consente agli sviluppatori R di utilizzare sia tecniche statistiche predefinite, sia di creare autonomamente nuovi algoritmi.