HBase
 sql >> Database >  >> NoSQL >> HBase

Cloudera Impala:query in tempo reale in Apache Hadoop, per davvero

Dopo un lungo periodo di intenso lavoro ingegneristico e feedback degli utenti, siamo molto lieti e orgogliosi di annunciare il progetto Cloudera Impala. Questa tecnologia è rivoluzionaria per gli utenti Hadoop e non prendiamo questa affermazione alla leggera.

Quando Google ha pubblicato il suo documento Dremel nel 2010, siamo stati ispirati come il resto della community dalla visione tecnica di portare funzionalità di query ad hoc in tempo reale ad Apache Hadoop, a complemento dell'elaborazione batch tradizionale di MapReduce. Oggi annunciamo una base di codice open source completamente funzionale che offre quella visione - e, crediamo, un po' di più - che chiamiamo Cloudera Impala. Un binario Impala è ora disponibile in versione beta pubblica, ma se preferisci testare Impala tramite una VM preconfezionata, ne abbiamo anche una per te. Puoi anche rivedere il codice sorgente e il cablaggio di test su Github in questo momento.

Impala alza il livello delle prestazioni delle query pur mantenendo un'esperienza utente familiare. Con Impala, puoi interrogare i dati, siano essi archiviati in HDFS o Apache HBase, incluse le funzioni SELECT, JOIN e aggregate, in tempo reale. Inoltre, utilizza gli stessi metadati, sintassi SQL (Hive SQL), driver ODBC e interfaccia utente (Hue Beeswax) di Apache Hive, fornendo una piattaforma familiare e unificata per query batch o in tempo reale. (Per questo motivo, gli utenti di Hive possono utilizzare Impala con un sovraccarico di installazione minimo.) Il primo rilascio beta include il supporto per file di testo e SequenceFiles; SequenceFiles può essere compresso come Snappy, GZIP e BZIP (con Snappy consigliato per le massime prestazioni). Il supporto per formati aggiuntivi tra cui Avro, RCFile, file di testo LZO e il formato colonnare Parquet è previsto per il ritiro della produzione.

Per evitare la latenza, Impala elude MapReduce per accedere direttamente ai dati attraverso un motore di query distribuito specializzato che è molto simile a quelli che si trovano negli RDBMS paralleli commerciali. Il risultato è una prestazione in ordine di grandezza più veloce rispetto a Hive, a seconda del tipo di query e configurazione. (Vedi le domande frequenti di seguito per maggiori dettagli.) Tieni presente che questo miglioramento delle prestazioni è stato confermato da diverse grandi aziende che hanno testato Impala su carichi di lavoro reali ormai da diversi mesi.

Di seguito una vista architettonica di alto livello:

Ci sono molti vantaggi in questo approccio rispetto ad approcci alternativi per interrogare i dati Hadoop, tra cui:

  • Grazie all'elaborazione locale sui nodi di dati, i colli di bottiglia della rete vengono evitati.
  • È possibile utilizzare un archivio di metadati unico, aperto e unificato.
  • La costosa conversione del formato dei dati non è necessaria e quindi non si verifica alcun sovraccarico.
  • Tutti i dati sono immediatamente interrogabili, senza ritardi per ETL.
  • Tutto l'hardware viene utilizzato per le query Impala e per MapReduce.
  • È necessario un solo pool di macchine per la scalabilità.

Ti invitiamo a leggere la documentazione per ulteriori dettagli tecnici.

Infine, vorremmo rispondere ad alcune domande che prevediamo saranno popolari:

L'Impala è open source?
Sì, Impala è open source al 100% (licenza Apache). Puoi rivedere il codice tu stesso su Github oggi.

In che modo Impala è diversa da Dremel?
La prima e principale differenza è che Impala è open source e disponibile per tutti, mentre Dremel è di proprietà di Google.

Tecnicamente, Dremel ottiene tempi di risposta interattivi su set di dati molto grandi attraverso l'uso di due tecniche:

  • Un nuovo formato di archiviazione a colonne per dati/dati relazionali nidificati con strutture nidificate
  • Algoritmi di aggregazione scalabile distribuiti, che consentono di calcolare i risultati di una query su migliaia di macchine in parallelo.

Quest'ultimo è mutuato da tecniche sviluppate per DBMS paralleli, che hanno ispirato anche la creazione di Impala. A differenza di Dremel come descritto nel documento del 2010, che poteva gestire solo query a tabella singola, Impala supporta già l'intero set di operatori di join che sono uno dei fattori che rendono SQL così popolare.

Per realizzare tutti i vantaggi in termini di prestazioni dimostrati da Dremel, Hadoop disporrà a breve di un efficiente formato di archiviazione binaria colonnare chiamato Parquet. Ma contrariamente a Dremel, Impala supporta una gamma di formati di file popolari. Ciò consente agli utenti di eseguire Impala sui propri dati esistenti senza doverli "caricare" o trasformarli. Consente inoltre agli utenti di decidere se desiderano ottimizzare la flessibilità o semplicemente le prestazioni pure.

Per riassumere, Impala più Parquet raggiungerà le prestazioni delle query descritte nel documento Dremel, ma supererà quanto descritto nella funzionalità SQL.

Quanto sono davvero più veloci le query Impala rispetto a quelle Hive?
L'importo preciso del miglioramento delle prestazioni dipende fortemente da una serie di fattori:

  • Configurazione hardware:Impala è generalmente in grado di sfruttare appieno le risorse hardware e in particolare genera un carico della CPU inferiore rispetto a Hive, il che spesso si traduce in una larghezza di banda I/O aggregata più elevata rispetto a Hive. Impala ovviamente non può andare più veloce di quanto consentito dall'hardware, quindi eventuali colli di bottiglia dell'hardware limiteranno l'accelerazione osservata. Per le query legate esclusivamente all'I/O, in genere vediamo miglioramenti delle prestazioni nell'intervallo 3-4x.
  • Complessità della query:le query che richiedono più fasi MapReduce in Hive o richiedono join sul lato ridotto vedranno una velocità maggiore rispetto, ad esempio, alle semplici query di aggregazione a tabella singola. Per le query con almeno un join, abbiamo riscontrato un aumento delle prestazioni di 7-45 volte.
  • Disponibilità della memoria principale come cache per i dati delle tabelle:se i dati a cui si accede tramite la query escono dalla cache, l'accelerazione sarà più drammatica grazie all'efficienza superiore di Impala. In questi scenari, abbiamo riscontrato incrementi di 20x-90x rispetto a Hive anche su semplici query di aggregazione.

Impala è un sostituto di MapReduce o Hive o, se è per questo, della tradizionale infrastruttura di data warehouse?
No. Continueranno a esserci molti casi d'uso praticabili per MapReduce e Hive (ad esempio, per carichi di lavoro di trasformazione dei dati di lunga durata) nonché per i tradizionali framework di data warehouse (ad esempio, per analisi complesse su set di dati strutturati e limitati). Impala è un complemento a questi approcci, supportando casi d'uso in cui gli utenti devono interagire con set di dati molto grandi, in tutti i silos di dati, per ottenere rapidamente set di risultati mirati.

La versione beta di Impala presenta limitazioni tecniche?
Come accennato in precedenza, i formati di file supportati nella prima versione beta includono file di testo e SequenceFiles, con molti altri formati che saranno supportati nella prossima versione di produzione. Inoltre, attualmente tutti i join vengono eseguiti in uno spazio di memoria non più grande di quello del nodo più piccolo del cluster; in produzione, i join verranno eseguiti nella memoria aggregata. Infine, al momento non sono possibili UDF.

Quali sono i requisiti tecnici per la versione beta di Impala?
Dovrai avere CDH4.1 installato su RHEL/CentOS 6.2. Consigliamo vivamente l'uso di Cloudera Manager (versione gratuita o Enterprise) per distribuire e gestire Impala perché si occupa automaticamente della distribuzione distribuita e del monitoraggio dei dettagli.

Qual ​​è la politica di supporto per la versione beta di Impala?
Se sei un cliente Cloudera esistente con un bug, puoi richiedere un ticket di assistenza clienti e cercheremo di risolverlo nel miglior modo possibile. Se non sei un cliente Cloudera esistente, puoi utilizzare la nostra istanza JIRA pubblica o la mailing list impala-user, che sarà monitorata dai dipendenti Cloudera.

Quando sarà generalmente disponibile Impala per l'uso in produzione?
È previsto un calo della produzione per il primo trimestre del 2013. I clienti possono ottenere supporto commerciale sotto forma di abbonamento Cloudera Enterprise RTQ in quel momento.

Ci auguriamo che coglierai l'occasione per rivedere il codice sorgente di Impala, esplorare la versione beta, scaricare e installare la VM o qualsiasi combinazione di quanto sopra. Il tuo feedback in tutti i casi è apprezzato; abbiamo bisogno del tuo aiuto per rendere Impala ancora migliore.

Ti forniremo ulteriori aggiornamenti su Impala man mano che ci avviciniamo alla disponibilità della produzione. (Aggiornamento:leggi Impala 1.0.)

Risorse Impala:
– Codice sorgente Impala
– Download Impala (versione beta e VM)
– Documentazione Impala
– JIRA pubblica
– Mailing list Impala
– Impala gratuita formazione (Screencast)

(Aggiunto il 30/10/2012) Articoli di terze parti su Impala:
– GigaOm: la query in tempo reale per Hadoop democratizza l'accesso all'analisi dei big data (22 ottobre 2012)
– Wired: Man esce da Google, ricostruisce la macchina di query top-secret (24 ottobre 2012)
– InformationWeek: Cloudera debutta nella query Hadoop in tempo reale (24 ottobre 2012)
– GigaOm:Cloudera rende SQL un cittadino di prim'ordine su Hadoop (24 ottobre 2012)
– ZDNet:Impala di Cloudera porta Hadoop a SQL e BI (25 ottobre 2012)
– Wired:Marcel Kornacker Profile (29 ottobre 2012)
– Dr. Dobbs: Cloudera Impala – Elaborazione di petabyte alla velocità di Pensiero (29 ottobre 2012)

Marcel Kornacker è l'architetto di Impala. Prima di entrare in Cloudera, è stato lo sviluppatore principale per il motore di query del progetto F1 di Google.

Justin Erickson è il product manager di Impala.