Apache Hive
Apache Hive è un framework open-source, sviluppato sulla base di Hadoop, che facilita l’esecuzione di query e la gestione di grandi quantità di dati in sistemi distribuiti e fornisce:
- strumenti per eseguire facilmente estrazioni/trasformazioni/caricamenti (ETL) di dati;
- un meccanisco per imporre una struttura ai dati con diversi formati;
- accesso ai file memorizzati direttamente nell’HDFS e in altri sistemi di archiviazione come Apache HBase;
- esecuzione di query via MapReduce;
L’approccio generale di Hive è quello di proiettare una struttura di una tabella sul dataset per poi manipolarla con un linguaggio di interrogazione.
Dato che i dati sono memorizzati nell’HDFS, le operazioni possono essere scalate in tutti i datanodes potendo, così, manipolare grandi quantità di dati velocemente.
L’interrogazione della base dati avviene tramite il linguaggio HiveQL che traduce automaticamente le query SQL-like in job MapReduce ed eseguite in Hadoop.
Con HiveQL, inoltre, è possible realizzare script MapReduce personalizzati che possono essere aggiunti alle query.
Come lavora Hive
Le tabelle di Hive, simili a quelle dei database relazionali, sono partizionate e possono essere interrogate tramite un semplice linguaggio d”interrogazione; non ci sono limitazioni nella manipolazioni dei dati, infatti, possono essere aggiornati, inseriti ed eliminati.
Entrando nel dettaglio, i dati nelle tabelle sono serializzati e memorizzati in directory nel file system distribuito di Hadoop (HDFS). Ogni tabella può essere suddivisa in partizioni; ogni partizione viene memorizzata in una sotto-directory della directory della tabella.
Hive supporta tutti i formati più comuni di dati come BIGINT, BINARY, BOOLEAN, CHAR, DECIMAL, DOUBLE, FLOAT, INT, SMALLINT, STRING, TIMESTAMP, e TINYINT. Inoltre, questi formati possono essere combinati per formare tipi di dati complessi, come ad esempio strutture, mappe e array.
Componenti di Hive
Hive comprende due componenti, HCatalog e WebHCat. HCatalog è un sistema di gestione tabelle e memorizzazione per Hadoop che consente agli utenti con diversi strumenti di elaborazione – tra cui Pig e MapReduce – di leggere e scrivere più facilmente dati sulle tabelle.
WebHCat, invece, è un servizio che permette di eseguire job Hadoop MapReduce, Pig e Hive o operazioni sui metadati utilizzando una interfaccia HTTP.