Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Introduzione a Hive

Introduzione ad Apache Hive, framework di datawarehousing per l'elaborazione distribuita di grandi quantità di dati, basato su Hadoop.
Introduzione ad Apache Hive, framework di datawarehousing per l'elaborazione distribuita di grandi quantità di dati, basato su Hadoop.
Link copiato negli appunti

Hive è un framework di datawarehousing per l'elaborazione distribuita di grandi quantità di dati. Si colloca in pieno
nello scenario dei Big Data ed è stato ideato da Facebook per facilitare la scrittura di task MapReduce su HDFS, il
file system distribuito di
Hadoop.

La caratteristica innovativa di Hive è l'adozione di una sintassi SQL-like, detta HiveQL, per la definizione delle operazioni da svolgere sui dati.
Questo l'ha reso uno strumento facile da approcciare sia per i programmatori, sia per operatori di altri settori che, pur non essendo informatici di professione, spesso hanno già avuto
esperienze con SQL, ad esempio in suite da ufficio come Microsoft Office (si pensi alle query utilizzabili in Access). Inoltre,
SQL può essere imparato rapidamente e permette di mettere immediatamente alla prova le conoscenze che si acquisiscono.
L'impiego di SQL ha pertanto determinato buona parte del grande successo di Hive che è stato spesso preferito ad Apache Pig, nato
con il medesimo scopo di semplificare l'accesso ad Hadoop, ma che richiede l'apprendimento di un suo proprio linguaggio, Pig Latin. Nonostante non siano passati
molti anni dalla sua nascita, Hive si è evoluto molto, entrando in stretto rapporto con la piattaforma universale di Big Data, Apache Spark, aprendosi a vari formati di file e sistemi
di storage diversi da HDFS e spopolando sulle piattaforme Cloud.

Come ottenere Hive

Per studiare Hive, è necessario averne un'istanza a disposizione. La si può ottenere in vari modi:

  • come accennato, Hive è disponibile su molte piattaforme in Cloud offerte sia da Amazon, Google, Microsoft sia da molti
    altri operatori e ambienti di questo tipo possono offrire modalità opportune anche per il primo approccio. Viene infatti
    offerto spesso un periodo di prova gratuito, ed anche successivamente a questo i software in Cloud, per loro stessa natura, non
    richiedono iscrizioni fisse ma si pagano esclusivamente le risorse consumate;
  • si possono scaricare macchine virtuali già pronte, ricche di moltissimi strumenti per Big Data tra cui Hive. A tal proposito
    possiamo citare la Cloudera Quickstart e la Hortonworks Sandbox;
  • si può procedere in proprio con l'installazione di Hive su una macchina fisica o virtuale.

Considerato che le prime due opzioni sono già pronte all'uso, nel prossimo paragrafo approfondiamo i dettagli di quest'ultimo punto.

Installazione di Hive

Hive viene solitamente installato su macchine Linux e Windows purché si abbia a disposizione una versione di
Java pari almeno alla 1.7, sebbene a breve si renderà necessario Java 8. Si può scaricare Hive dalla pagina
Downloads scegliendo tra versione binaria e file
sorgenti da compilare. Hive attualmente è alla release 3.1.1. Riferendoci all'archivio di file binari, una volta terminato
il download, è sufficiente scompattarlo. All'interno della cartella così creata, se ne potrà individuare un'altra di nome
bin contenente tutti i comandi di Hive tanto che potrà essere utile impostare variabili di sistema per raggiungerli più comodamente.

Il cuore del funzionamento di Hive: metastore e i metadati

Hive agisce come un database relazionale ed in questo possiamo trovare una certa assonanza con la scelta di SQL come linguaggio di interrogazione. Hive permette di manipolare
i file a disposizione dei repository (HDFS o, come vedremo, molti altri provider di storage) mediante dei database "virtuali" che crea in una porzione
di spazio, denominata metastore. Il metastore viene gestito tramite un database relazionale che di default è Apache Derby,
ma può essere sostituito con altri.
Qui verranno custoditi i metadati che rappresenteranno il collegamento tra i file dei repository e le tabelle del metastore. Come vedremo nelle prossime lezioni,
una delle prime operazioni che dovremo imparare a fare sarà quella di definire le tabelle in Hive e specificare a quali file saranno collegate specificando criteri di
associazione tra le loro strutture.

Il metastore va inizializzato mediante il comando schematool presente nella cartella bin. Ad esempio, se volessimo basarlo sul
database Derby potremmo utilizzare questo comando:

$  schematool -dbType derby -initSchema

Hive e Hadoop

Una delle situazioni più comuni per Hive è quella di essere impiegato in accoppiata con Hadoop per gestire i file all'interno del file system
HDFS. Si può realizzare ciò installandoli sulla stessa macchina e configurando Hive per essere in grado di localizzare Hadoop. Quella che segue è una configurazione di Hive dove si suppone che
Hadoop sia collocato nella cartella /home/hduser/hadoop-3.1.1 e Hive in /home/hduser/hive-3.1.0/, parametri che andranno opportunamente personalizzati.
Nella cartella conf di Hive troviamo il file hive-env.sh in cui possiamo assegnare le seguenti variabili valorizzate con i percorsi della cartella Hadoop e quella di configurazione di Hive.

HADOOP_HOME=/home/hduser/hadoop-3.1.1
export HIVE_CONF_DIR=/home/hduser/hive-3.1.0/conf

mentre nel file hive-site.xml, inseriamo la seguente configurazione dove supporremo che la cartella locale scelta per il metastore sia
/home/hduser/metastore_db e che in HDFS i file da elaborare vengano riposti nella cartella /warehouse:

<configuration>
  <property>
     <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:derby:;databaseName=/home/hduser/metastore_db;create=true</value>
  </property>
  <property>
     <name>hive.metastore.warehouse.dir</name>
     <value>/warehouse</value>
  </property>
  <property>
     <name>hive.metastore.uris</name>
     <value/>
  </property>
  <property>
     <name>javax.jdo.option.ConnectionDriverName</name>
     <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  </property>
  <property>
     <name>javax.jdo.PersistenceManagerFactoryClass</name>
     <value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value>
  </property>
  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>
</configuration>

A seguito di tale configurazione sarà necessario avviare Hadoop prima di richiamare le funzionalità di Hive.

Ti consigliamo anche