Cos'è Hive? Architettura e Modalità

Sommario:

Anonim

In questo tutorial imparerai-

  • Cos'è Hive?
  • Architettura Hive
  • Diverse modalità di Hive
  • Cos'è Hive Server2 (HS2)?

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 creati tabelle e database, quindi i dati vengono caricati in queste tabelle.
  • Hive come data warehouse progettato per la gestione e l'esecuzione di query solo sui dati strutturati archiviati nelle tabelle.
  • Mentre si occupa di dati strutturati, Map Reduce non ha funzionalità di ottimizzazione e usabilità come le UDF, ma il framework Hive sì. L'ottimizzazione delle query si riferisce a un modo efficace di eseguire le query in termini di prestazioni.
  • Il linguaggio ispirato a SQL di Hive separa l'utente dalla complessità della programmazione Map Reduce. Riutilizza concetti familiari del mondo dei database relazionali, come tabelle, righe, colonne e schemi, 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 la memorizzazione delle informazioni sullo schema. Questo Metastore risiede in genere in un database relazionale. Possiamo interagire con Hive usando metodi come
    • GUI Web
    • Interfaccia JDBC (Java Database Connectivity)
  • La maggior parte delle interazioni tende a verificarsi tramite un'interfaccia a riga di comando (CLI). Hive fornisce una CLI per scrivere query Hive utilizzando Hive Query Language (HQL)
  • In generale, la sintassi HQL è simile alla sintassi SQL con cui la maggior parte degli analisti di dati ha familiarità. La query di esempio riportata di seguito mostra tutti i record presenti nel nome della tabella menzionato.
    • Query di esempio : selezionare * da
  • Hive supporta quattro formati di file: TEXTFILE, SEQUENCEFILE, ORC e ​​RCFILE (Record Columnar File).
  • 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 impostare MySQL come database e memorizzare le informazioni sui metadati, controlla 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 di Hadoop anziché sul database tradizionale.
  • L'esecuzione della query Hive sarà come una serie di mappe generate automaticamente che riducono i lavori.
  • Hive supporta concetti di partizione e bucket per un facile recupero dei dati quando il client esegue la query.
  • Hive supporta UDF (funzioni definite dall'utente) personalizzate per la pulizia dei dati, il filtraggio, ecc. In base ai requisiti dei programmatori, è possibile definire UDF Hive.

Database relazionali Hive Vs: -

Utilizzando Hive, possiamo eseguire alcune funzionalità peculiari che non si ottengono 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 un attimo.

Vediamo ora cosa rende Hive così veloce.

Alcune differenze chiave tra Hive e database relazionali sono le seguenti;

I database relazionali sono di " Schema on READ e Schema on Write ". Prima creando una tabella, quindi inserendo i dati nella tabella specifica. Sulle tabelle del database relazionale, è possibile eseguire funzioni come inserimenti, aggiornamenti e modifiche.

Hive è " Schema on READ only ". 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 di dati. Quindi non è possibile aggiornare e modificare i dati su più nodi (versioni di Hive inferiori a 0.13).

Inoltre, Hive supporta il pattern " READ Many WRITE Once ". 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 di Hive (Hive 0.14) presentano le opzioni Aggiorna ed Elimina come nuove funzionalità

Architettura Hive

Lo screenshot qui sopra spiega in dettaglio l'architettura Apache Hive

Hive Consiste principalmente di 3 parti principali

  1. Clienti Hive
  2. Servizi Hive
  3. Archiviazione e elaborazione di Hive

Clienti Hive:

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

Per le applicazioni correlate a Java, fornisce driver JDBC. Diverso da qualsiasi tipo di applicazioni fornite driver ODBC. Questi client e driver a loro volta comunicano nuovamente con il server Hive nei servizi Hive.

Servizi Hive:

Le interazioni del cliente con Hive possono essere eseguite tramite Hive Services. Se il client desidera eseguire operazioni relative a 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. Driver elaborerà tali richieste da diverse applicazioni a meta store e sistemi di campo per ulteriori elaborazioni.

Archiviazione e elaborazione di Hive:

I servizi Hive come Meta store, File system e Job Client comunicano a loro volta con lo storage Hive ed eseguono le seguenti azioni

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

Flusso di esecuzione del lavoro:

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

Il flusso di dati in Hive si comporta nel seguente schema;

  1. Esecuzione di query dall'interfaccia utente (interfaccia utente)
  2. Il driver sta interagendo con il compilatore per ottenere il piano. (Qui il piano si riferisce all'esecuzione di query) processo e la relativa raccolta di informazioni sui metadati
  3. Il compilatore crea il piano per l'esecuzione di un lavoro. Compilatore che comunica con Meta store per ottenere la richiesta di metadati
  4. Il meta store invia le informazioni sui metadati al compilatore
  5. Compilatore che comunica con Driver con il piano proposto per eseguire la query
  6. Driver Invio di 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 Name Node e poi Data node per ottenere i valori memorizzati nelle tabelle.
  • EE recupererà i record desiderati dai nodi di 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 i dati effettivi dai nodi di 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. Meta store memorizzerà solo le informazioni sul nome del database, i nomi delle tabelle e i 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 job tracker 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 di dati all'EE, invierà i risultati al driver e all'interfaccia utente (front-end)

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

Diverse modalità di Hive

Hive può funzionare in due modalità a seconda delle dimensioni dei nodi di 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 una singola macchina locale, possiamo utilizzare questa modalità
  • L'elaborazione sarà molto veloce su set di dati più piccoli presenti nella macchina locale

Quando utilizzare la modalità di riduzione della mappa:

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

In Hive, possiamo impostare questa proprietà per indicare quale modalità Hive può funzionare? Per impostazione predefinita, funziona in modalità Riduzione mappa e per la modalità locale è possibile avere la seguente impostazione.

Hive per lavorare in modalità locale impostata

SET mapred.job.tracker = local;

Dalla versione 0.7 di Hive supporta una modalità per eseguire automaticamente i lavori di riduzione della mappa 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

Sommario:

Hive è uno strumento ETL e data warehouse in cima all'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 query ed elaborazione dei dati.
  • Fornisce così tante funzionalità rispetto a RDMS che ha alcune limitazioni.

Per la 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 archiviazione.