Cos'è Hive? ArchiTecnologia e modalità

Cos'è Hive?

Hive è uno strumento ETL e di data warehousing sviluppato su Hadoop Distributed File System (HDFS). Hive semplifica il lavoro per eseguire operazioni come

  • Incapsulamento dei dati
  • Query ad hoc
  • Analisi di enormi set di dati

Caratteristiche importanti di Hive

  • In Hive vengono prima create tabelle e database e poi i dati vengono caricati in queste tabelle.
  • Hive come data warehouse progettato per la gestione e l'interrogazione solo dei dati strutturati archiviati in tabelle.
  • Pur trattando dati strutturati, Map Reduce non dispone di funzionalità di ottimizzazione e usabilità come le UDF, ma il framework Hive sì. L'ottimizzazione delle query si riferisce a un modo efficace di esecuzione delle query in termini di prestazioni.
  • Il linguaggio di Hive ispirato a SQL separa l'utente dalla complessità della programmazione Map Reduce. Riutilizza concetti familiari dal mondo dei database relazionali, come tabelle, righe, colonne e schema, ecc. per facilitare l'apprendimento.
  • La programmazione di Hadoop funziona su file flat. Pertanto, Hive può utilizzare le strutture di directory per “partizionare” i dati per migliorare le prestazioni su determinate query.
  • Un nuovo e importante componente di Hive, ovvero Metastore, utilizzato per archiviare informazioni sullo schema. Questo Metastore risiede in genere in un database relazionale. Possiamo interagire con Hive usando metodi come
    • GUI Web
    • Java Interfaccia di connettività al database (JDBC).
  • La maggior parte delle interazioni tendono ad avvenire tramite un'interfaccia a riga di comando (CLI). Hive fornisce una CLI per scrivere query Hive utilizzando Hive Query Language (HQL)
  • Generalmente, la sintassi HQL è simile a SQL sintassi con cui la maggior parte degli analisti di dati ha familiarità. La query di esempio seguente mostra tutti i record presenti nel nome della tabella menzionata.
    • Interrogazione di esempio : Scelto da
  • Hive supporta quattro formati di file TEXTFILE, SEQUENCEFILE, ORC e ​​RCFILE (Registra file a colonne).
  • Per l'archiviazione dei metadati di un singolo utente, Hive utilizza il database derby e per i metadati di più utenti o il caso di metadati condivisi Hive utilizza MYSQL.

Per l'allestimento MySQL come database e per memorizzare le informazioni sui metadati controllare il Tutorial “Installazione e configurazione di HIVE e MYSQL”

Alcuni dei punti chiave di Hive:

  • La principale differenza tra HQL e SQL è che la query Hive viene eseguita sull'infrastruttura Hadoop anziché sul database tradizionale.
  • L'esecuzione della query Hive sarà come una serie di lavori di riduzione della mappa generati automaticamente.
  • Hive supporta concetti di partizione e bucket per un facile recupero dei dati quando il client esegue la query.
  • Hive supporta UDF (User Defined Functions) specifiche e personalizzate per la pulizia, il filtraggio dei dati, ecc. In base ai requisiti dei programmatori è possibile definire le UDF Hive.

Hive contro database relazionali

Utilizzando Hive, possiamo eseguire alcune funzionalità peculiari che non sono raggiunte nei database relazionali. Per un'enorme quantità di dati in peta-byte, è importante interrogarli e ottenere risultati in pochi secondi. E Hive lo fa in modo abbastanza efficiente, elabora le query velocemente e produce risultati in pochi secondi.

Vediamo ora cosa rende Hive così veloce.

Alcune differenze fondamentali tra Hive e i database relazionali sono le seguenti;

I database relazionali sono di “Schema in READ e Schema in Write“. Prima creando una tabella e poi inserendo i dati nella tabella particolare. Sulle tabelle del database relazionale è possibile eseguire funzioni come Inserzioni, Aggiornamenti e Modifiche.

L'alveare è “Schema solo in READ“. Quindi, funzioni come l'aggiornamento, le modifiche, ecc. non funzionano con questo. Perché la query Hive in un cluster tipico viene eseguita su più nodi dati. Pertanto non è possibile aggiornare e modificare i dati su più nodi. (Versioni Hive inferiori alla 0.13)

Inoltre, Hive supporta “LEGGI Molti SCRIVI una volta" modello. Ciò significa che dopo aver inserito la tabella possiamo aggiornare la tabella nelle ultime versioni di Hive.

NOTA: Tuttavia la nuova versione di Hive include funzionalità aggiornate. Le versioni Hive (Hive 0.14) presentano le opzioni Aggiorna ed Elimina come nuove funzionalità

Alveare Architectura

Alveare Architectura

Lo screenshot sopra spiega il Apache Architettura dell'alveare in dettaglio

L'alveare è composto principalmente da 3 parti principali

  1. Clienti Hive
  2. Servizi dell'alveare
  3. Archiviazione e informatica dell'alveare

Clienti Hive:

Hive fornisce diversi driver per la comunicazione con diversi tipi di applicazioni. Per le applicazioni basate su Thrift, fornirà il client Thrift per la comunicazione.

Da Java applicazioni correlate, fornisce i driver JDBC. Oltre a qualsiasi tipo di applicazione, vengono forniti i driver ODBC. Questi client e driver a loro volta comunicano nuovamente con il server Hive nei servizi Hive.

Servizi dell'alveare:

Le interazioni del cliente con Hive possono essere eseguite tramite i Servizi Hive. Se il client desidera eseguire operazioni relative alle query in Hive, deve comunicare tramite Hive Services.

CLI è l'interfaccia della riga di comando che funge da servizio Hive per le operazioni DDL (Data Definition Language). Tutti i driver comunicano con il server Hive e con il driver principale nei servizi Hive come mostrato nel diagramma dell'architettura sopra.

Il driver presente nei servizi Hive rappresenta il driver principale e comunica tutti i tipi di JDBC, ODBC e altre applicazioni specifiche del client. Il driver elaborerà le richieste provenienti da diverse applicazioni al meta store e ai sistemi sul campo per un'ulteriore elaborazione.

Archiviazione e elaborazione Hive:

I servizi Hive come Meta Store, File System e Job Client a loro volta comunicano con l'archiviazione Hive ed eseguono le seguenti azioni

  • Le informazioni sui metadati delle tabelle create in Hive vengono archiviate nel "database di archiviazione Meta" di Hive.
  • I risultati delle query e i dati caricati nelle tabelle verranno archiviati nel cluster Hadoop su HDFS.

Flusso di esecuzione del lavoro:

Flusso di esecuzione del lavoro

Dallo screenshot qui sopra possiamo comprendere il flusso di esecuzione del lavoro in Hive con Hadoop

Il flusso di dati in Hive si comporta secondo il seguente schema;

  1. Esecuzione di query dall'interfaccia utente (interfaccia utente)
  2. L'autista sta interagendo con il compilatore per ottenere il piano. (Qui il piano si riferisce all'esecuzione della query) e la relativa raccolta di informazioni sui metadati
  3. Il compilatore crea il piano per un lavoro da eseguire. Compilatore che comunica con Meta Store per ottenere la richiesta di metadati
  4. Il meta store invia le informazioni sui metadati al compilatore
  5. Il compilatore comunica con il driver con il piano proposto per eseguire la query
  6. Driver Invio dei piani di esecuzione al motore di esecuzione
  7. Execution Engine (EE) funge da ponte tra Hive e Hadoop per elaborare la query. Per le operazioni DFS.
  • EE dovrebbe prima contattare il nodo nome e poi i nodi dati per ottenere i valori memorizzati nelle tabelle.
  • EE recupererà i record desiderati dai nodi dati. I dati effettivi delle tabelle risiedono solo nel nodo dati. Mentre da Name Node recupera solo le informazioni sui metadati per la query.
  • Raccoglie dati effettivi dai nodi dati relativi alla query menzionata
  • Execution Engine (EE) comunica in modo bidirezionale con il Meta store presente in Hive per eseguire operazioni DDL (Data Definition Language). Qui vengono eseguite operazioni DDL come CREATE, DROP e ALTERING tabelle e database. Il meta store memorizzerà solo le informazioni sul nome del database, sui nomi delle tabelle e sui nomi delle colonne. Recupererà i dati relativi alla query menzionata.
  • Execution Engine (EE) a sua volta comunica con i demoni Hadoop come il nodo Nome, i nodi Dati e il tracker lavoro per eseguire la query sul file system Hadoop
  1. Recupero dei risultati dal driver
  2. Invio dei risultati al motore di esecuzione. Una volta recuperati i risultati dai nodi dati all'EE, i risultati verranno restituiti al driver e all'interfaccia utente (front-end)

Hive Costantemente in contatto con il file system Hadoop e i suoi demoni tramite il motore di esecuzione. La freccia tratteggiata nel diagramma del flusso di lavoro mostra la comunicazione del motore di esecuzione con i demoni Hadoop.

Diverse modalità di Hive

Hive può funzionare in due modalità a seconda della dimensione dei nodi dati in Hadoop.

Queste modalità sono,

  • Modalità locale
  • Modalità di riduzione della mappa

Quando utilizzare la modalità locale:

  • Se Hadoop è installato in modalità pseudo con un nodo dati, utilizziamo Hive in questa modalità
  • Se la dimensione dei dati è inferiore in termini di limitazione a un singolo computer locale, è possibile utilizzare questa modalità
  • L'elaborazione sarà molto veloce sui set di dati più piccoli presenti nel computer locale

Quando utilizzare la modalità di riduzione della mappa:

  • Se Hadoop ha più nodi dati e i dati sono distribuiti su nodi diversi, utilizziamo Hive in questa modalità
  • Funzionerà su grandi quantità di set di dati e query che verranno eseguite in modo parallelo
  • Attraverso questa modalità è possibile ottenere l'elaborazione di set di dati di grandi dimensioni con prestazioni migliori

In Hive, possiamo impostare questa proprietà per indicare in quale modalità Hive può funzionare. Di default, funziona in modalità Map Reduce e per la modalità locale puoi avere la seguente impostazione.

Hive per lavorare in modalità locale impostata

SET mapred.job.tracker=locale;

Dalla versione Hive 0.7 supporta una modalità per eseguire automaticamente i lavori di riduzione delle mappe in modalità locale.

Cos'è Hive Server2 (HS2)?

HiveServer2 (HS2) è un'interfaccia server che esegue le seguenti funzioni:

  • Consente ai client remoti di eseguire query su Hive
  • Recupera i risultati delle query menzionate

Dall'ultima versione ha alcune funzionalità avanzate basate su Thrift RPC come;

  • Concorrenza multi-client
  • Autenticazione

Sintesi

Hive è uno strumento ETL e di data warehouse basato sull'ecosistema Hadoop e utilizzato per l'elaborazione di dati strutturati e semi-strutturati.

  • Hive è un database presente nell'ecosistema Hadoop che esegue operazioni DDL e DML e fornisce un linguaggio di query flessibile come HQL per una migliore interrogazione ed elaborazione dei dati.
  • Fornisce così tante funzionalità rispetto a RDMS che presenta alcune limitazioni.

Per una logica specifica dell'utente per soddisfare i requisiti del cliente.

  • Fornisce la possibilità di scrivere e distribuire script definiti personalizzati e funzioni definite dall'utente.
  • Inoltre, fornisce partizioni e bucket per logiche specifiche di storage.

Riassumi questo post con: