Impala - Architettura
Impala è un motore di esecuzione di query MPP (Massive Parallel Processing) che viene eseguito su numerosi sistemi nel cluster Hadoop. A differenza dei sistemi di archiviazione tradizionali, impala è disaccoppiato dal suo motore di archiviazione. Ha tre componenti principali, vale a dire, Impala daemon (Impalad) , Impala Statestore e Impala metadata o metastore.
Demone Impala ( Impalad )
Demone Impala (noto anche come impalad) viene eseguito su ogni nodo in cui è installato Impala. Accetta le query da varie interfacce come impala shell, hue browser, ecc ... e le elabora.
Ogni volta che una query viene inviata a un impalad su un particolare nodo, quel nodo funge da "coordinator node"Per quella query. Più query vengono servite da Impalad in esecuzione anche su altri nodi. Dopo aver accettato la query, Impalad legge e scrive su file di dati e parallelizza le query distribuendo il lavoro agli altri nodi Impala nel cluster Impala. Quando le query vengono elaborate su varie istanze di Impalad , tutte restituiscono il risultato al nodo di coordinamento centrale.
A seconda del requisito, le query possono essere inviate a un Impalad dedicato o in modo bilanciato a un altro Impalad nel cluster.
Impala State Store
Impala ha un altro componente importante chiamato Impala State store, che è responsabile del controllo dell'integrità di ogni Impalad e quindi di inoltrare frequentemente lo stato di ogni demone Impala agli altri demoni. Questo può essere eseguito sullo stesso nodo su cui è in esecuzione il server Impala o un altro nodo all'interno del cluster.
Il nome del processo del daemon di archivio di Impala State è State stored . Impalad segnala il proprio stato di integrità al daemon dell'archivio di Impala State, ovvero State stored .
In caso di guasto di un nodo per qualsiasi motivo, Statestore aggiorna tutti gli altri nodi su questo guasto e una volta che tale notifica è disponibile per l'altro impalad , nessun altro demone Impala assegna ulteriori query al nodo interessato.
Metadati e Meta Store Impala
I metadati e il meta store Impala sono un altro componente importante. Impala utilizza i database MySQL o PostgreSQL tradizionali per memorizzare le definizioni delle tabelle. I dettagli importanti come le informazioni su tabelle e colonne e le definizioni di tabelle sono archiviati in un database centralizzato noto come meta store.
Ogni nodo Impala memorizza nella cache tutti i metadati localmente. Quando si ha a che fare con una quantità estremamente grande di dati e / o molte partizioni, ottenere metadati specifici della tabella potrebbe richiedere una notevole quantità di tempo. Pertanto, una cache dei metadati archiviata localmente aiuta a fornire tali informazioni istantaneamente.
Quando una definizione di tabella o i dati di una tabella vengono aggiornati, altri daemon di Impala devono aggiornare la cache dei metadati recuperando i metadati più recenti prima di eseguire una nuova query sulla tabella in questione.
Interfacce di elaborazione delle query
Per elaborare le query, Impala fornisce tre interfacce elencate di seguito.
Impala-shell - Dopo aver configurato Impala utilizzando la VM Cloudera, è possibile avviare la shell Impala digitando il comando impala-shellnell'editor. Discuteremo di più sulla shell Impala nei prossimi capitoli.
Hue interface- È possibile elaborare le query Impala utilizzando il browser Hue. Nel browser Hue, hai l'editor di query Impala in cui puoi digitare ed eseguire le query impala. Per accedere a questo editor, prima di tutto, devi accedere al browser Hue.
ODBC/JDBC drivers- Proprio come altri database, Impala fornisce driver ODBC / JDBC. Utilizzando questi driver, è possibile connettersi a impala tramite linguaggi di programmazione che supportano questi driver e creare applicazioni che elaborano query in impala utilizzando tali linguaggi di programmazione.
Procedura di esecuzione della query
Ogni volta che gli utenti passano una query utilizzando una delle interfacce fornite, questa viene accettata da uno degli Impalad nel cluster. Questo Impalad viene trattato come un coordinatore per quella particolare query.
Dopo aver ricevuto la query, il coordinatore della query verifica se la query è appropriata, utilizzando il Table Schemadal meta store Hive. Successivamente, raccoglie le informazioni sulla posizione dei dati necessari per eseguire la query, dal nodo del nome HDFS e invia queste informazioni ad altri impalad per eseguire la query.
Tutti gli altri daemon Impala leggono il blocco di dati specificato ed elaborano la query. Non appena tutti i daemon completano le loro attività, il coordinatore della query raccoglie il risultato e lo consegna all'utente.