Introduzione

Completato

MapReduce è un framework per l'elaborazione di dati in parallelo, sviluppato originariamente da Google1, per l'elaborazione di applicazioni di Big Data in un numero elevato di computer. Il sistema prova a ridurre la comunicazione interprocesso spostando il calcolo verso i dati. Inoltre, tollera in modo trasparente gli errori di dati e di calcolo, che sono altamente probabili negli ambienti cloud su larga scala. Di conseguenza, gli sviluppatori apprezzano MapReduce per la scalabilità, la tolleranza di errore e l'elasticità che offre. Per gli utenti del cloud sono ora disponibili molte implementazioni del modello di programmazione di MapReduce, molte delle quali si basano su Apache Hadoop.

Dal suo debutto, MapReduce viene spesso associato a Hadoop3, 4, un'implementazione open source di MapReduce. L'uso di Hadoop in ambito accademico, governativo e industriale è in rapida crescita.2 Ad esempio, Yahoo! lo usa per circa l'80%-90% dei processi5. Anche altre aziende, ad esempio Facebook e Microsoft, supportano il framework.6 Negli ambienti accademici, Hadoop viene attualmente usato per la simulazione sismica, l'elaborazione del linguaggio naturale e il data mining sul Web, tra altre applicazioni.7, 8

Hadoop MapReduce esegue la maggior parte delle attività richieste nell'implementazione di programmi cloud tramite tre strategie principali:

  • Divide automaticamente i processi in attività distribuite per sfruttarne efficacemente il parallelismo.
  • Considera la località dei dati e le variazioni nei carichi di lavoro di sistema complessivi per pianificare processi e attività in modo efficiente nei nodi del cluster partecipanti.
  • Tollera in modo trasparente gli errori di dati e attività.

Obiettivi di apprendimento

Contenuto del modulo:

  • Identificare il modello di programmazione distribuita sottostante di MapReduce
  • Illustrare come sfruttare il parallelismo dei dati con MapReduce
  • Identificare l'input e l'output delle attività di mapping e di riduzione
  • Definire l'elasticità delle attività ed evidenziarne l'importanza per la pianificazione efficace dei processi
  • Illustrare le strategie di pianificazione delle attività di mapping e di riduzione in Hadoop MapReduce
  • Descrivere gli elementi dell'architettura YARN e identificare il ruolo di ognuno
  • Riepilogare il ciclo di vita di un processo MapReduce in YARN
  • Confrontare e contrapporre le architetture e gli allocatori di risorse di YARN e della versione precedente di Hadoop MapReduce
  • Illustrare le differenze tra la pianificazione di processi e attività in YARN e nella versione precedente di Hadoop MapReduce

Prerequisiti

  • Comprendere cos'è il cloud computing, inclusi i modelli di servizio cloud e i provider di servizi cloud comuni
  • Conoscere le tecnologie che consentono il cloud computing
  • Comprendere le modalità di pagamento e fatturazione dei provider di servizi cloud per il cloud
  • Sapere che cosa sono i data center e perché esistono
  • Sapere come vengono configurati e attivati i data center e come ne viene effettuato il provisioning
  • Comprendere come viene effettuato il provisioning e calcolato il consumo delle risorse cloud
  • Avere familiarità con il concetto di virtualizzazione
  • Conoscere i diversi tipi di virtualizzazione
  • Comprendere la virtualizzazione della CPU
  • Comprendere la virtualizzazione della memoria
  • Comprendere la virtualizzazione delle funzioni di I/O
  • Conoscere i diversi tipi di dati e le modalità di archiviazione
  • Avere familiarità con i file system distribuiti e il loro funzionamento
  • Avere familiarità con i database NoSQL e l'archiviazione di oggetti, nonché il loro funzionamento
  • Conoscere i concetti della programmazione distribuita e sapere perché è utile per il cloud


Riferimenti

  1. J. Dean e S. Ghemawat (dic. 2004). MapReduce: Simplified Data Processing on Large Clusters OSDI
  2. H. Herodotou, H. Lim, G. Luo, N. Borisov, L. Dong, F. B. Cetin e S. Babu (2011). Starfish: A Self-Tuning System for Big Data Analytics CIDR
  3. Z. Fadika e M. Govindaraju (dic. 2010). LEMO-MR: basso sovraccarico e implementazione elastica MapReduce ottimizzata per applicazioni con utilizzo intensivo di CPU e memoria I edizione Enterprise E 2nd Int. Conf. sulla tecnologia e la scienza del cloud computing (CloudCom)
  4. Hadoop
  5. N. B. Rizvandi, A. Y. Zomaya, A. J. Boloori e J. Taheri (2011). Preliminary Results: Modeling Relation between Total Execution Time of MapReduce Applications and Number of Mappers/Reducers Tech. R. 679, The University of Sydney
  6. S. Ibrahim, H. Jin, L. Lu, S. Wu, B. He e L. Qi (dic. 2010). LEEN: Locality/Fairness-Aware Key Partitioning for MapReduce in the Cloud CloudCom
  7. M. Hammoud e M. F. Sakr (2011). Locality-Aware Reduce Task Scheduling for MapReduce CloudCom
  8. M. Zaharia, A. Konwinski, A. Joseph, R. Katz e I. Stoica (2008). Improving MapReduce Performance in Heterogeneous Environments OSDI