Un data warehouse basato su Hadoop, adatto per alcune applicazioni ad alta latenza (sviluppo offline), può mappare file di dati strutturati e semi-strutturati archiviati nei file Hadoop in una tabella di database e fornire dati di tipo SQL basati sulla tabella A query modello, chiamato Hive Query Language (HQL), per l'accesso e l'analisi di grandi set di dati archiviati nei file Hadoop;
Il nucleo di Hive è convertire HQL in un programma MapReduce e quindi inviare il programma al cluster Hadoop per l'esecuzione;
Hive stesso non memorizza né calcola i dati. Si basa completamente su HDFS e MapReduce. Le tabelle in Hive sono tabelle puramente logiche;
Cos'è un data warehouse?
Il data warehouse in sé non "produce" alcun dato e i suoi dati provengono da diversi sistemi esterni;
Allo stesso tempo, il data warehouse stesso non ha bisogno di "consumare" alcun dato e i risultati sono aperti a varie applicazioni esterne;
Per questo si chiama “magazzino” e non “fabbrica”;
Architettura e componenti Hive
Meta negozio: Solitamente archiviati in database relazionali come Mysql/derby, i metadati in Hive includono il nome della tabella, le colonne e le partizioni della tabella e i relativi attributi, gli attributi della tabella (se si tratta di una tabella esterna, ecc.), la directory in cui si trovano i dati della tabella, ecc.;
Autista : driver, incluso parser della sintassi, compilatore del piano, ottimizzatore ed esecutore. Completa le dichiarazioni di query HQL dall'analisi lessicale, analisi della sintassi, compilazione, ottimizzazione e generazione del piano di query. Il piano di query generato viene archiviato in HDFS e successivamente eseguito dalla chiamata del motore di esecuzione;
Parser (parser SQL): converte le stringhe SQL in un albero di sintassi astratto AST ed esegue l'analisi della sintassi sull'AST, ad esempio se la semantica SQL è corretta, se la tabella esiste e se esistono i campi;
Compilatore (piano fisico): Compila AST per generare un piano di esecuzione logico (DAG);
Ottimizzatore (ottimizzatore di query): Ottimizzare il piano logico di esecuzione;
Esecuzione: Converte il piano di esecuzione logico in un piano fisico eseguibile, che è un programma MapReduce/Spark;
Processo di esecuzione HQL
Fare una richiesta: Avviare una richiesta di esecuzione dall'interfaccia utente al driver;
Ottieni il piano di esecuzione: Il driver invia la richiesta dell'utente al compilatore per ottenere il piano di esecuzione;
Ottieni metadati: Il compilatore ottiene i metadati rilevanti dall'archivio Meta in base alle informazioni relative alla tabella e alla partizione nell'istruzione SQL;
Metadati restituiti: Il meta store restituisce i metadati corrispondenti al compilatore;
Piano di esecuzione del reso: Analizza e ottimizza SQL in base ai metadati di tabelle e partizioni per generare piani di esecuzione logici. Il piano è un grafico DAG e ogni fase corrisponde a una mappa MapReduce o a un'operazione di riduzione;
Esegui il piano di esecuzione: Inviare il piano di esecuzione all'Execution Engine, che invierà il piano di esecuzione logica a Hadoop per l'esecuzione sotto forma di MapReduce;
Si ottengono i risultati correnti: Il conducente raccoglie i risultati della corsa e li invia all'interfaccia utente;