IMHO, SQL su HDFS e SQL su Hadoop sono gli stessi. Dopotutto Hadoop è HDFS + MapReduce. Quindi quando diciamo SQL su HDFS, si capisce che è SQL su Hadoop.
Tornando alla domanda vera e propria, Impala fornisce una risposta più rapida in quanto utilizza MPP
(elaborazione in modo massivo parallelo) a differenza di Hive che utilizza MapReduce sotto il cofano, che comporta alcuni overhead iniziali (come specificato da Charles sir). L'elaborazione in parallelo massiccio è un tipo di elaborazione che utilizza molte CPU separate in esecuzione in parallelo per eseguire un singolo programma in cui ogni CPU ha la propria memoria dedicata. Il fatto stesso che Impala, essendo basata su MPP, non coinvolga le spese generali di un lavoro di MapReduce vale a dire. L'impostazione e la creazione del lavoro, l'assegnazione dello slot, la creazione di divisioni, la generazione di mappe, ecc., Lo rendono incredibilmente veloce.
Ma ciò non significa che Impala sia la soluzione a tutti i tuoi problemi. Essendo ad alta memoria (MPP), non è adatto per attività che richiedono operazioni di dati pesanti come join ecc., Poiché non è possibile inserire tutto nella memoria. Questo è dove Hive è una misura migliore.
Quindi, se avete bisogno di tempo reale, query ad-hoc su un sottoinsieme dei vostri dati vanno per Impala. E se hai l'elaborazione in batch, hai bisogno dei tuoi Big Data per Hive.
HTH
Grazie Charles per questa spiegazione. "Impala non fornisce tolleranza di errore rispetto a Hive", significa che se un nodo va mentre la query viene elaborata, fallisce. Avevi in mente qualche altro scenario (s). – techuser
@Integrator Da un'intervista a maggio 2013, uno dei product manager di Cloudera ha confermato che nella sua attuale implementazione, se un nodo fallisce a metà query, la query si interrompe e l'utente deve riemettere quella query (http: //www.datanami.com/datanami/2013-05-01/cloudera_releases_impala_into_the_wild.html) –
Grazie per la risposta. – techuser