Come anticipato, MapReduce è un framework, il cui funzionamento si basa sul concetto di programmazione funzionale, che è stato concepito per realizzare applicazioni in grado di elaborare in parallelo grandi quantità di dati; esso in pratica rappresenta il nucleo centrale del sistema di calcolo distribuito di Hadoop. Dopo aver introdotto il MapReduce, e prima di passare alle fasi di installazione e configurazione di Hadoop su alcune delle più importanti piattaforme supportate, sarà necessario presentare un breve approfondimento sulle componenti che consentono di lavorare con ques'ultimo.
YARN
Acronimo di Yet-Another-Resource-Negotiator, YARN è un framework che consente di creare applicazioni o infrastrutture di calcolo distribuito di qualsiasi tipo. YARN si prende carico della gestione delle risorse quali la memoria e la CPU, e monitora l'esecuzione delle applicazioni. Rispetto alla prima versione di MapReduce è ora un sistema molto più generico, infatti la seconda versione di MapReduce è stata riscritta come applicazione YARN, con alcune sostanziali differenze. Le due funzioni svolte dal JobTracker sono state suddivise in altrettante componenti differenti:
- ResourceManager si occupa dell'assegnazione delle risorse alle applicazioni;
- ApplicationMaster gestisce la singola applicazione, facendola partire, monitorandola e determinandone il riavvio in caso di errore;
Inoltre, per ciascun nodo troviamo un NodeManager che ha il compito di gestire i processi. Riassumendo, un'applicazione MapReduce è un job MapReduce eseguito da un ApplicationManager e il framework MapReduce è quindi solo uno dei possibili framework di calcolo sviluppabili attraverso YARN.
HCatalog
Come abbiamo già accennato più volte nel corso di questa guida, una delle caratteristiche di Hadoop è la mancanza di uno schema fisso per i dati. Questo rende possibile la gestione dei dati non strutturati ai quali applichiamo uno schema quando li leggiamo. Tale schema è costituito da metadati che ci consentono di creare query simili a SQL attraverso il linguaggio HiveQL.
Una delle peculiarità di HCatalog è che esso presenta agli utenti una vista tabellare dei dati presenti in HDFS, ciò indipendentemente dal formato di origine; si tratta di una caratteristica fondamentale, soprattutto considerando la necessità di dover consultare continuamente un'ampia varietà di dati. Inoltre, i dati non strutturati non subiscono cambiamenti quando applichiamo questo strato di metadati. In questo contesto, HCatalog rende più semplice la creazione e la modifica dei metadati, nonché la loro esposizione ai vari strumenti con cui è possibile interagire con essi (ad esempio lo stesso MapReduce).
Zookepeer
Apache Zookepeer è uno strumento per la gestione del cluster che offre le seguenti garanzie di funzionamento:
- Consistenza sequenziale, con gli aggiornamenti inviati da un client applicati nell'ordine in cui sono mandati;
- Atomicità: gli aggiornamenti vanno a buon fine interamente oppure non sono affatto applicati;
- Un client ottiene sempre la stessa vista del servizio indipendentemente dal server a cui si connette;
- Affidabilità.
Zookepeer fornisce un'infrastruttura centralizzata e una serie di servizi che consentono la sincronizzazione di oggetti comuni nel cluster. Tali oggetti comuni sono, per esempio, le configurazioni, che devono essere presenti su tutti i nodi e che devono rimanere sincronizzate.
Ambari
Apache Ambari è uno strumento per la gestione e il monitoraggio di cluster Hadoop. Ambari fornisce un'interfaccia Web attraverso la quale è possibile svolgere i compiti amministrativi. Supporta le seguenti componenti Hadoop:
- HDFS;
- MapReduce;
- Hive;
- HCatalog;
- HBase;
- Zookeeper;
- Oozie;
- Pig;
- Sqoop.
Per ognuno di questi componenti, Ambari permette di:
- utilizzare un "wizard" per la procedura d'installazione;
- gestire il cluster fornendo gli strumenti per far partire e fermare i servizi su ciascun nodo;
- effettuare il monitoraggio sia attraverso una dashboard che espone diverse metriche, sia attraverso un sistema di "alert" che invia segnalazioni tramite messaggi di posta elettronica in presenza di situazioni critiche.
Ora che sono state analizzate le più importanti componenti a supporto del lavoro di Hadoop sarà possibile passare alla fase successiva, quella della sua installazione e configurazione.