Architettura e comandi Apache Hive: modalità, caratteristiche e applicazioni

Pubblicato: 2021-06-30

Sommario

Cos'è l'alveare?

L'hive di Apache è uno strumento di data warehousing open source sviluppato da Facebook per l'elaborazione distribuita e l'analisi dei dati. È sviluppato su Hadoop Distributed File System (HDFS). Un meccanismo per proiettare la struttura sui dati in Hadoop è fornito da Hive. Un linguaggio simile a SQL chiamato HiveQL (HQL) viene utilizzato per interrogare quei dati. Esiste una somiglianza tra le tabelle in Hive e le tabelle in un database relazionale. Le query Hive possono essere facilmente scritte da chiunque abbia familiarità con SQL.

Alcune caratteristiche di Hive sono:

  • Archiviazione delle informazioni sullo schema in un database e dei dati elaborati in HDFS.
  • Progettato per OLAP.
  • Il linguaggio di interrogazione è HiveQL o HQL, che è simile a SQL.
  • È veloce, familiare, scalabile ed estensibile.

Usi dell'alveare

  • È lo storage distribuito Apache Hive.
  • Vengono forniti strumenti che consentono agli utenti di estrarre, trasformare e caricare facilmente i dati.
  • Una varietà di formati di dati sono offerti per fornire la struttura.
  • Hive può accedere ai file archiviati in Hadoop Distributed File System (HDFS).

Comandi dell'alveare

I comandi dell'alveare sono:

  1. Data Definition Language (DDL): le tabelle e altri oggetti nel database vengono creati e modificati tramite questi comandi.
  • CREA: viene utilizzato per creare una tabella o un database.
  • MOSTRA: Viene utilizzato per mostrare Database, Tabella, Proprietà, ecc.
  • ALTER: viene utilizzato per apportare modifiche alla tabella esistente.
  • DESCRIVERE: Descrive le colonne della tabella.
  • TRUNCATE: utilizzato per troncare ed eliminare in modo permanente le righe delle tabelle.
  • DELETE: Elimina i dati della tabella, ma possono essere ripristinati.
  1. Data Manipulation Language (DML): utilizzato per recuperare, archiviare, modificare, eliminare, inserire e aggiornare i dati nel database.
  • Sintassi per istruzioni LOAD, INSERT

LOAD data <LOCAL> inpath <file path> nella tabella [tablename]

  • Dopo il caricamento dei dati, i comandi di manipolazione dei dati vengono utilizzati per recuperare i dati.
  • La funzione di aggregazione del conteggio viene utilizzata per contare il numero totale dei record in una tabella.
  • La parola chiave "crea esterno" viene utilizzata per creare una tabella e fornisce una posizione in cui verrà creata la tabella. Una tabella EXTERNAL punta a qualsiasi posizione HDFS per la sua archiviazione.
  • I comandi di inserimento vengono utilizzati per caricare la tabella Hive dei dati. "Inserisci sovrascrittura" viene utilizzato per sovrascrivere i dati esistenti e "Inserisci in" viene utilizzato per aggiungere i dati a un dato esistente.
  • Una tabella è divisa in partizioni dal comando "partitioned by" e divisa in bucket dal comando "clustered by".
  • L'inserimento di dati genera errori poiché la partizione dinamica non è abilitata. Pertanto, i seguenti parametri devono essere impostati nella shell Hive.

imposta hive.exec.dynamic.partition=true;

Per abilitare le partizioni dinamiche, per impostazione predefinita, è false

imposta hive.exec.dynamic.partition.mode=nonstrict;

  • Il comando "Rilascia tabella" elimina i dati e i metadati di una tabella
  • Aggregazione: Sintassi:

Seleziona conteggio (categoria DISTINCT) dal nome della tabella;

Il comando conterà diverse categorie di tabelle 'cate'.

  • Raggruppamento: Sintassi:

Seleziona categoria, somma (importo) dai record txt raggruppa per categoria

Il set di risultati sarà raggruppato in una o più colonne.

  • Operazione di unione: eseguire per combinare i campi di due tabelle utilizzando valori comuni a ciascuna colonna.
  • Join esterno sinistro: per le tabelle A e B, il join esterno sinistro deve contenere tutti i record della tabella "sinistra" (A), anche se la condizione di unione non trova alcun record corrispondente nella tabella "destra" (B).
  • Join esterno destro: ogni riga della tabella "destra" (B) apparirà nella tabella unita almeno una volta.
  • Full join: la tabella unita conterrà tutti i record di entrambe le tabelle. La tabella unita conterrà tutti i record di entrambe le tabelle.

Architettura dell'alveare

L' architettura dell'hive di Apache è mostrata nella Figura 1 .

Elenco dei componenti principali

I componenti principali dell'architettura hive sono:

1. Cliente dell'alveare

Diverse applicazioni scritte in linguaggi come Java, Python, C++, ecc. vengono comunicate attraverso l'uso di diversi driver forniti da Hive. Può essere scritto in qualsiasi lingua a scelta. I client ei server a loro volta comunicano con il server Hive nei servizi Hive.

Principalmente sono classificati in tre tipi:

  • Thrift Client: si basa su Apache Thrift per soddisfare una richiesta da un client Thrift. Il client Thrift verrà utilizzato per la comunicazione per le applicazioni basate su Thrift.
  • Client JDBC: JDBC viene fornito per le applicazioni relative a Java. Le applicazioni Java sono collegate a Hive utilizzando il driver JDBC. Utilizza inoltre il Thrift per comunicare con il server Hive.
  • Client ODBC: le applicazioni basate sul protocollo ODBC possono connettersi a Hive tramite i driver ODBC. Simile a JDBC, utilizza Thrift per comunicare con il server Hive.

2. Servizi dell'alveare

I servizi Hive forniscono mezzi per le interazioni di Hive con i Clienti. Eventuali operazioni relative alle richieste che devono essere eseguite dal Cliente dovranno essere comunicate tramite i servizi di Noleggio. Per le operazioni DDL (Data Definition Language), CLI funge da servizio Hive.

Tutti i driver devono comunicare con il server Hive e quindi con il driver principale nei servizi Hive. I driver nei servizi Hive rappresentano il driver principale che comunica con le applicazioni specifiche del Cliente e tutti i tipi di JDBC, ODBC, ecc. Le richieste provenienti da diverse applicazioni vengono elaborate dal driver al metastore e ai sistemi sul campo che verranno ulteriormente elaborati.

I servizi offerti da Hive sono:

  • Beeline: Beeline è una shell di comando in cui un utente può inviare le proprie query al sistema. È supportato da HiveServer2. È un client JDBC basato su SQLLINE CLI.
  • Hive Server 2: i client possono eseguire le query sull'hive. Successore di HiveServer1, consente l'esecuzione di più query da più client. Fornisce il miglior supporto per client API aperti come JDBC e ODBC.
  • Driver Hive: l'utente invia le istruzioni HiveQL al driver Hive tramite la shell dei comandi. Invia la query al compilatore e crea gli handle di sessione per la query.
  • Compilatore Hive: il compilatore Hive viene utilizzato per passare la query. Utilizzando i metadati archiviati nel metastore, il compilatore Hive esegue l'analisi semantica e il controllo del tipo sui diversi blocchi ed espressioni di query. Un piano di esecuzione viene quindi generato dal compilatore che è il DAG (Directed Acyclic Graph). Ogni fase del DAG è un'operazione di metadati, un'operazione su HDFS o è un lavoro di mappatura/riduzione.
  • Ottimizzatore: il ruolo principale dell'ottimizzatore è eseguire operazioni di trasformazione sul piano di esecuzione. Aumenta l'efficienza e la scalabilità suddividendo le attività.
  • Motore di esecuzione : dopo il completamento dei passaggi di compilazione e ottimizzazione, è il ruolo del motore di esecuzione che esegue il piano di esecuzione creato dal compilatore. Il piano viene eseguito utilizzando Hadoop in base alle loro dipendenze.
  • Metastore : Metastore è generalmente un database relazionale che memorizza le informazioni sui metadati relative alla struttura delle tabelle e delle partizioni. È un repository centrale che include anche la memorizzazione delle informazioni sui tipi di colonne e colonne. Le informazioni relative al serializzatore e al deserializzatore sono anche archiviate in Metastore, necessario per le operazioni di lettura/scrittura insieme ai file HDFS che memorizzano i dati. Un'interfaccia Thrift è fornita da Metastore per interrogare e manipolare i metadati di Hive.

Metastore può essere configurato in due modalità:

  • Remoto: questa modalità è utile per le applicazioni non Java e nella modalità remota il metastore è un servizio dell'usato.
  • Incorporato: in questa modalità, il client può interagire direttamente con il metastore tramite JDBC.
  • HCatalog: il livello di gestione della tabella e dell'archiviazione per Hadoop è HCatalog. Sono disponibili diversi strumenti di elaborazione dati per leggere e scrivere dati sulla griglia come Pig, MapReduce, ecc. Costruito sulla parte superiore del metastore Hive, i dati tabulari del metastore Hive sono esposti ad altri strumenti di elaborazione dati.
  • WebHCat: WebHCat è un'interfaccia HTTP e un'API REST per HCatalog. Esegue operazioni di metadati Hive e offre un servizio di esecuzione di lavori Hadoop MapReduce (o YARN), Pig, Hive.

3. Elaborazione e gestione delle risorse

L'esecuzione delle query viene effettuata da un framework interno MapReduce.

Il framework MapReduce è un framework software per l'elaborazione di grandi quantità di dati su grandi cluster di hardware di base. I dati vengono suddivisi in blocchi e quindi elaborati dalle attività di riduzione della mappa.

4. Stoccaggio distribuito

I servizi Hive comunicano con lo storage Hive per l'esecuzione delle seguenti azioni:

  • Il "database di archiviazione meta" di Hive contiene le informazioni sui metadati delle tabelle create in Hive.
  • Il cluster Hadoop su HDFS memorizzerà i risultati della query ei dati caricati sulle tabelle.

Diverse modalità di alveare

A seconda della dimensione dei dati, Hive può operare in due modalità.

  1. Modalità locale

La modalità locale di Hive viene utilizzata quando

  • L'Hadoop installato ha un nodo di dati ed è installato in modalità pseudo.
  • La dimensione dei dati di una singola macchina locale è inferiore.
  • Elaborazione rapida su macchine locali grazie ai set di dati più piccoli presenti.
  1. Modalità di riduzione della mappa

La modalità di riduzione della mappa di Hive viene utilizzata quando

  • Hadoop ha più nodi di dati con dati distribuiti tra i diversi nodi.
  • La dimensione dei dati è maggiore ed è richiesta l'esecuzione parallela della query.
  • È possibile elaborare grandi set di dati con prestazioni migliori.

Caratteristiche dell'alveare

  • I dati vengono caricati nelle tabelle dopo la creazione delle tabelle e dei database.
  • Solo i dati strutturati archiviati nelle tabelle possono essere gestiti e interrogati da Hive.
  • Il framework Hive ha caratteristiche di ottimizzazione e usabilità mentre gestisce i dati strutturati che non sono presenti in Map Reduce.
  • Per facilità d'uso, il linguaggio Hive ispirato a SQL è un approccio più semplice rispetto al complesso linguaggio di programmazione di Map Reduce. In Hive vengono utilizzati concetti familiari di tabelle, righe, colonne, ecc.
  • Per aumentare le prestazioni delle query, Hive può partizionare i dati utilizzando una struttura di directory.
  • Hive contiene un componente importante chiamato "Metastore" che risiede in un database relazionale e memorizza le informazioni sullo schema. È possibile utilizzare due metodi per interagire con Hive: GUI Web e interfaccia JDBC (Java Database Connectivity).
  • Un'interfaccia a riga di comando (CLI) viene utilizzata per la maggior parte delle interazioni. La CLI viene utilizzata per scrivere le query Hive utilizzando Hive Query Language (HQL).
  • La sintassi HQL è simile a quella della sintassi SQL.
  • Quattro formati di file sono supportati da Hive; FILE DI TESTO, FILE DI SEQUENZA, ORC e ​​FILE RC (file colonnare record).

Conclusione

Apache Hive è uno strumento di data warehousing open source costituito da componenti principali come client Hive, servizi Hive, framework di elaborazione e gestione delle risorse e archiviazione distribuita.

Si basa sull'ecosistema Hadoop per l'elaborazione di strutture e dati semi-strutturati. L'interfaccia utente fornita da Hive consente all'utente di inviare le proprie query in Hive Query Language (HQL). Questo viene passato al compilatore per generare un piano di esecuzione. Il piano viene infine eseguito dal motore di esecuzione.

Se sei interessato a saperne di più sui Big Data, dai un'occhiata al nostro PG Diploma in Software Development Specialization nel programma Big Data, progettato per professionisti che lavorano e fornisce oltre 7 casi di studio e progetti, copre 14 linguaggi e strumenti di programmazione, pratiche pratiche workshop, oltre 400 ore di apprendimento rigoroso e assistenza all'inserimento lavorativo con le migliori aziende.

Controlla i nostri altri corsi di ingegneria del software su upGrad.

Guida la rivoluzione tecnologica basata sui dati

7 CASI DI STUDIO E PROGETTI. ASSISTENZA LAVORATIVA CON LE MIGLIORI AZIENDE. MENTOR DELLO STUDENTE DEDICATO.
Programma di certificazione avanzato in Big Data da IIIT Bangalore