Apache Hive
Cos'è Apache Hive?
Apache Hive è un software di data warehouse open-source progettato per leggere, scrivere e gestire grandi set di dati estratti dall'Apache Hadoop Distributed File System (HDFS), un componente del più ampio ecosistema Hadoop.
Grazie alla vasta documentazione e ai continui aggiornamenti, Apache Hive continua a migliorare l'elaborazione dei dati nel segno della facilità di accesso.
Ecco altre informazioni utili
La storia di Apache Hive
Apache Hive è un progetto open-source creato da Joydeep Sen Sarma e Ashish Thusoo mentre lavoravano per Facebook. Nato inizialmente come sottoprogetto di Apache Hadoop, è poi diventato un progetto di primo livello a sé stante. Con le crescenti limitazioni poste dai lavori Hadoop e Map Reduce e con l'aumento delle dimensioni dei dati, passate da 10 GB al giorno nel 2006 a 1 TB e poi a 15 TB al giorno nel giro di pochi anni, gli ingegneri di Facebook non erano più in grado di gestire con facilità i lavori complessi; da qui, l'esigenza di creare Hive.
Apache Hive si prefiggeva di raggiungere due obiettivi: in primo luogo, creare un linguaggio dichiarativo basato su SQL che permettesse agli ingegneri di inserire i propri script e programmi quando SQL non era sufficiente e a gran parte del mondo dell'engineering (basato su competenze SQL) di utilizzare Hive riducendo al minimo le interruzioni e le necessità di riaddestramento.
L'altro obiettivo era fornire un archivio di metadati centralizzato (basato su Hadoop) di tutti i set di dati all'interno dell'organizzazione. Inizialmente sviluppato per Facebook, Apache Hive è oggi utilizzato e sviluppato anche da altre aziende, come ad esempio Netflix. Amazon mantiene un fork di Apache Hive in Amazon Elastic MapReduce su Amazon Web Services.
Quali sono le principali caratteristiche di Hive?
Apache Hive supporta l'analisi di grandi set di dati memorizzati nell'HDFS di Hadoop e in file system compatibili quali Amazon S3, Azure Blob Storage, Azure Data Lake Storage, Google Cloud Storage e Alluxio.
Fornisce un linguaggio di query simile a SQL chiamato HiveQL con schema-on-read e converte in modo trasparente le query in lavori Apache Spark, MapReduce e Apache Tez. Di seguito vengono riportate altre caratteristiche di Hive:
- Funzioni per i dati di Hive che aiutano a elaborare e interrogare set di dati di grandi dimensioni. Alcune delle funzionalità fornite da queste funzioni includono, ad esempio, la manipolazione di stringhe, la manipolazione di date, la conversione di tipo, gli operatori condizionali e le funzioni matematiche.
- Archiviazione dei metadati in un sistema di gestione per database relazionali.
- Diversi tipi di archiviazione, come Parquet, testo semplice, RCFile, HBase, ORC e altri.
- Possibilità di operare su dati compressi archiviati nell'ecosistema Hadoop per mezzo di algoritmi.
- Funzioni definite dall'utente (UDF) integrate per manipolare date, stringhe e altri strumenti di estrazione dati. Hive supporta l'estensione dell'insieme delle UDF per gestire casi d'uso non supportati dalle funzioni integrate.
- Query tipo SQL (HiveQL), che vengono implicitamente convertite in lavori MapReduce, Tez o Spark.
Architettura di Apache Hive e componenti chiave
I componenti chiave dell'architettura di Apache Hive sono Hive Server 2, Hive Query Language (HQL), External Apache Hive Metastore e Hive Beeline Shell.
Hive Server 2
Hive Server 2 accetta le richieste in arrivo da utenti e applicazioni, crea un piano di esecuzione e genera automaticamente un lavoro YARN per elaborare le query SQL. Il server supporta anche l'ottimizzatore Hive e il compilatore Hive per snellire l'estrazione e l'elaborazione dei dati.
Hive Query Language
Consentendo l'implementazione di codice scritto in un linguaggio simile a SQL, Apache Hive elimina la necessità di ricorrere a lunghi blocchi di codice JavaScript per ordinare i dati non strutturati e consente agli utenti di effettuare query utilizzando istruzioni HQL integrate (HQL). Queste istruzioni possono essere utilizzate per navigare in grandi set di dati, perfezionare i risultati e condividere i dati in modo rapido ed economico.
Hive Metastore
Il metastore è il repository centrale dell'infrastruttura di Apache Hive dove vengono archiviati tutti i metadati di Hive. Nel metastore, i metadati possono anche essere formattati in tabelle e partizioni Hive per consentire il confronto dei dati su più database relazionali. Includono i nomi delle tabelle, i nomi delle colonne, i tipi di dati, le informazioni sulle partizioni e la posizione dei dati su HDFS.
Hive Beeline Shell
In linea con altri sistemi per la gestione di database (DBMS), Hive ha una propria interfaccia a riga di comando integrata, dove gli utenti possono eseguire istruzioni HQL. Inoltre, la shell di Hive esegue anche i driver JDBC e ODBC per Hive e può quindi condurre query da un'applicazione Open Database Connectivity o Java Database Connectivity.
Come funziona il software Apache Hive?
Hive Server 2 accetta le richieste in arrivo da utenti e applicazioni prima di creare un piano di esecuzione e genera automaticamente un lavoro YARN per elaborare le query SQL. Il lavoro YARN può essere generato come carico di lavoro MapReduce, Tez o Spark.
L'attività funzionerà quindi come un'applicazione distribuita in Hadoop. Una volta elaborata la query SQL, i risultati vengono restituiti all'utente finale o all'applicazione, oppure trasmessi all'HDFS.
Hive Metastore sfrutterà quindi un database relazionale come Postgres o MySQL per rendere persistenti questi metadati, mentre Hive Server 2 recupererà la struttura delle tabelle come parte della pianificazione delle query. In alcuni casi, le applicazioni possono anche interrogare il metastore come parte della loro elaborazione sottostante.
I carichi di lavoro Hive vengono quindi eseguiti in YARN, il gestore di risorse Hadoop, per fornire un ambiente di elaborazione in grado di eseguire lavori Hadoop. Questo ambiente di elaborazione consiste nella memoria e nella CPU allocate dai vari nodi worker nel cluster Hadoop.
YARN cercherà di sfruttare le informazioni sui metadati HDFS per garantire che l'elaborazione venga distribuita dove risiedono i dati necessari, con MapReduce, Tez, Spark oppure Hive può generare automaticamente il codice per le query SQL come lavori MapReduce, Tez o Spark.
Nonostante Hive abbia iniziato a sfruttare MapReduce solo di recente, nella maggior parte delle implementazioni di Cloudera Hadoop Hive sarà configurato per utilizzare MapReduce o talvolta Spark. Le distribuzioni di Hortonworks (HDP) hanno normalmente Tez come motore di esecuzione.
Quali sono i cinque diversi tipi di dati utilizzati da Apache Hive?
Grazie all'elaborazione batch, Apache Hive è in grado di estrarre e analizzare petabyte di dati in modo estremamente rapido ed efficiente, il che lo rende ideale non solo per l'elaborazione dei dati ma anche per l'esecuzione di query ad hoc.
Apache Hive gestisce cinque categorie di dati: numerici, data/ora, stringa, complessi e misti.
Dati di tipo numerico
Come si evince dal nome, si tratta di dati basati su numeri interi. Esempi di questi tipi di dati sono "TINYINT", "SMALLINT", "INT" e "BIGINT".
Dati di tipo data/ora
Questi tipi di dati consentono agli utenti di inserire un'ora e una data. Esempi di input accettati sono "TIMESTAMP", "DATE" e "INTERVALLO".
Dati di tipo stringa
Anche questo tipo di dati è molto semplice e consente di implementare un testo scritto, o "stringa", come dato da elaborare. Sono ad esempio dati di tipo di stringa "STRING", "VARCHAR" e "CHAR".
Dati di tipo complesso
I dati di tipo complesso sono tra i tipi di dati più avanzati. Registrano dati più elaborati e consistono in tipi come "STRUCT", "MAP", "ARRAY" e "UNION".
Dati di tipo misto
I tipi di dati che non rientrano in nessuna delle altre quattro categorie sono definiti dati di tipo misto e possono accettare input come "BOOLEAN" o "BINARY".
Come funziona Map Join in Hive Apache
Map Join è una funzione di Apache Hive impiegata per aumentare la velocità e l'efficienza di una query combinando, o meglio "unendo", i dati di due tabelle e bypassando le fasi Map-Reduce del processo.