10 modi per interrogare Hadoop con SQL

SQL: vecchio e rotto. Hadoop: nuova piccantezza. Questa è la saggezza convenzionale, ma l'enorme numero di progetti che mettono un comodo front-end SQL negli archivi dati Hadoop mostra che c'è una reale necessità di prodotti che eseguono query SQL su dati che risiedono all'interno di Hadoop invece di utilizzare semplicemente i rapporti nativi di Hadoop o esportare i dati di Hadoop in un database convenzionale.

MapR produce una propria distribuzione Hadoop e la nuova edizione (4.0.1) la include in quattro motori distinti per interrogare l'SQL della fiala Hadoop. I quattro sono sistemi di query SQL significativi per Hadoop, ma è disponibile molta più tecnologia SQL-for-Hadoop e sono costruiti per soddisfare esigenze e casi d'uso diversi, dall'esoterico all'universale.

Innanzitutto, i quattro motori SQL forniti con MapR:

Apache Hive: questa è la soluzione SQL-on-Hadoop originale, che cerca di emulare il comportamento, la sintassi e le interfacce di MySQL, incluso un client a riga di comando. Include anche un'API Java e driver JDBC per coloro che hanno già un investimento in applicazioni Java che eseguono query in stile MySQL. Nonostante la sua relativa semplicità e facilità d'uso, Hive è stato lento e di sola lettura, il che ha provocato una serie di iniziative per migliorarlo.

Stinger: Hortonworks, i produttori della propria distribuzione Hadoop, ha avviato il progetto Stinger come un modo per far avanzare lo sviluppo di Apache Hive e migliorarne le prestazioni. L'incarnazione più recente del progetto, Stinger.next, ha "tempi di risposta alle query inferiori al secondo" come uno dei suoi obiettivi di progettazione, insieme al supporto per i comportamenti transazionali (inserimenti, aggiornamenti ed eliminazioni). Queste modifiche debutteranno tutte nei prossimi 18 mesi, a cui seguiranno altre funzionalità come l'analisi SQL.

Apache Drill: un'implementazione open source di Dremel di Google (noto anche come BigQuery), Drill è stato concepito per eseguire query a bassa latenza su più tipi di archivi dati contemporaneamente con diverse interfacce di query (come Hadoop e NoSQL) e per essere altamente scalabile. Drill ha anche lo scopo di eseguire query all'interno di un'ampia gamma di tempi di esecuzione, che durano solo pochi millisecondi per essere eseguiti per minuti. MapR afferma che Drill è lungimirante, non solo retrocompatibile, uno dei motivi per cui ha scelto di dedicare i propri sforzi di sviluppo a quel progetto.

Spark SQL: il progetto Spark di Apache è per l'elaborazione in tempo reale, in memoria e parallelizzata dei dati Hadoop. Spark SQL si basa su di esso per consentire la scrittura di query SQL sui dati. Un modo migliore per pensarlo potrebbe essere Apache Hive per Apache Spark, poiché riutilizza i pezzi chiave della tecnologia Hive. In questo senso, è un'aggiunta per coloro che già lavorano con Spark. (Un progetto precedente, Shark, è stato incluso in questo.)

Oltre a questi quattro, altri sei si distinguono:

Apache Phoenix: i suoi sviluppatori lo chiamano "skin SQL per HBase" - un modo per interrogare HBase con comandi simili a SQL tramite un driver JDBC incorporabile costruito per alte prestazioni e operazioni di lettura / scrittura. Consideralo quasi un gioco da ragazzi per coloro che utilizzano HBase, grazie al fatto che è open source, sviluppato in modo aggressivo e dotato di funzionalità utili come il caricamento di dati in blocco.

Cloudera Impala: In un certo senso, Impala è un'altra implementazione di Dremel / Apache Drill, progettata per espandersi su Hive in modo che gli utenti Hive in uscita possano trarne il massimo vantaggio. È possibile eseguire query sui dati archiviati in HDFS o HBase e la sintassi SQL è, prevedibilmente, la stessa di Apache Hive. Ma la differenza principale di Impala rispetto a Drill è che non è pensato per essere indipendente dalla fonte; interroga esclusivamente Hadoop.

HAWQ per Pivotal HD: Pivotal fornisce la propria distribuzione Hadoop (Pivotal HD) e HAWQ è un componente proprietario per l'esecuzione di query SQL in HDFS. Di conseguenza, è un prodotto Pivotal-only, sebbene Pivotal sia monotono per la sua elaborazione SQL parallela e l'elevata conformità agli standard SQL.

Presto: Costruito dagli ingegneri di Facebook e utilizzato internamente a quell'azienda, questo motore di query open source ricorda Apache Drill in quanto è indipendente dalla sorgente. Può eseguire query sia su Hive che su Cassandra utilizzando i comandi ANSI SQL e gli sviluppatori possono estendere il sistema scrivendo connettori per esso utilizzando l'interfaccia del provider di servizi. Alcune funzioni di inserimento dati sono supportate, ma sono ancora molto semplici: non è possibile eseguire aggiornamenti, ma solo inserimenti.

Oracle Big Data SQL: era solo una questione di tempo prima che Oracle rilasciasse il proprio front-end di query SQL per Hadoop. Come Drill, può interrogare sia Hadoop che altri archivi NoSQL. Ma a differenza di Drill, è il prodotto di Oracle e si integra solo con Oracle Database 12c e versioni successive, il che limita seriamente il mercato.

IBM BigSQL: era solo questione di tempo prima che IBM facesse lo stesso, sebbene all'inizio del 2013 annunciò la prima anteprima tecnologica di BigSQL. Purtroppo, come per l'offerta Oracle, è legata a uno specifico prodotto IBM sul back-end - in questo caso, Hadoop di IBM, InfoSphere BigInsights. Detto questo, il front-end può essere un client JDBC / ODBC standard e le query possono includere dati da istanze IBM DB2, Teradata o PureData Systems for Analytics.