10 Möglichkeiten, Hadoop mit SQL abzufragen

SQL: alt und kaputt. Hadoop: neue Schärfe. Das ist die gängige Weisheit, aber die schiere Anzahl von Projekten, die ein praktisches SQL-Frontend für Hadoop-Datenspeicher bereitstellen, zeigt, dass Produkte, die SQL-Abfragen für Daten ausführen, die in Hadoop gespeichert sind, dringend benötigt werden, anstatt nur die nativen Berichte von Hadoop zu verwenden oder Hadoop-Daten in diese zu exportieren eine herkömmliche Datenbank.

MapR erstellt eine eigene Hadoop-Distribution und wird in der neuesten Version (4.0.1) mit vier verschiedenen Engines zum Abfragen von Hadoop Vial SQL gebündelt. Die vier sind bedeutende SQL-Abfragesysteme für Hadoop, aber es gibt weitaus mehr SQL-for-Hadoop-Technologie, und sie wurden entwickelt, um unterschiedliche Anforderungen und Anwendungsfälle zu erfüllen, von esoterisch bis universell.

Zunächst die vier SQL-Engines, die mit MapR geliefert werden:

Apache Hive: Dies ist die ursprüngliche SQL-on-Hadoop-Lösung, die versucht, das Verhalten, die Syntax und die Schnittstelle (n) von MySQL zu emulieren, einschließlich eines Befehlszeilenclients. Es enthält auch eine Java-API und JDBC-Treiber für diejenigen, die bereits in Java-Anwendungen investiert haben, die Abfragen im MySQL-Stil durchführen. Trotz seiner relativen Einfachheit und Benutzerfreundlichkeit war Hive langsam und schreibgeschützt, was eine Reihe von Initiativen zur Verbesserung ausgelöst hat.

Stinger: Hortonworks, Hersteller seiner eigenen Hadoop-Distribution, startete das Stinger-Projekt, um die Entwicklung von Apache Hive voranzutreiben und seine Leistung zu verbessern. Die jüngste Inkarnation des Projekts, Stinger.next, hat als Antwortziele "Abfrage-Antwortzeiten von weniger als einer Sekunde" sowie Unterstützung für Transaktionsverhalten (Einfügen, Aktualisieren und Löschen). Diese Änderungen werden alle in den nächsten 18 Monaten eingeführt, weitere Funktionen wie SQL Analytics werden folgen.

Apache Drill: Drill, eine Open-Source-Implementierung von Googles Dremel (auch bekannt als BigQuery), wurde entwickelt, um Abfragen mit geringer Latenz für mehrere Arten von Datenspeichern mit unterschiedlichen Abfrageschnittstellen (wie Hadoop und NoSQL) gleichzeitig durchzuführen und hoch skalierbar zu sein. Drills sollten auch Abfragen innerhalb eines weiten Bereichs von Ausführungszeiten ausführen, die nur wenige Millisekunden dauern und minutenlang ausgeführt werden. MapR behauptet, Drill sei zukunftsorientiert und nicht nur abwärtskompatibel. Dies ist einer der Gründe, warum das Unternehmen seine eigenen Entwicklungsbemühungen hinter dieses Projekt stellt.

Spark SQL: Das Spark-Projekt von Apache dient zur speicherinternen, parallelisierten Echtzeitverarbeitung von Hadoop-Daten. Spark SQL baut darauf auf, damit SQL-Abfragen für Daten geschrieben werden können. Eine bessere Möglichkeit, sich das vorzustellen, könnte Apache Hive für Apache Spark sein, da hier wichtige Teile der Hive-Technologie wiederverwendet werden. In diesem Sinne ist es eine Ergänzung für diejenigen, die bereits mit Spark arbeiten. (Ein früheres Projekt, Shark, wurde in dieses aufgenommen.)

Über diese vier hinaus fallen sechs weitere auf:

Apache Phoenix: Die Entwickler nennen es "SQL-Skin für HBase" - eine Möglichkeit, HBase mit SQL-ähnlichen Befehlen über einen einbettbaren JDBC-Treiber abzufragen, der für Hochleistungs- und Lese- / Schreibvorgänge ausgelegt ist. Betrachten Sie es als ein Kinderspiel für diejenigen, die HBase nutzen, da es Open Source ist, aggressiv entwickelt und mit nützlichen Funktionen wie dem Laden von Massendaten ausgestattet ist.

Cloudera Impala: In gewisser Weise ist Impala eine weitere Implementierung von Dremel / Apache Drill, die darauf ausgelegt ist, Hive zu erweitern, damit bestehende Hive-Benutzer das Beste daraus machen können. In HDFS oder HBase gespeicherte Daten können abgefragt werden, und die SQL-Syntax entspricht vorhersehbar der von Apache Hive. Der Hauptunterschied von Impala zu Drill besteht jedoch darin, dass es nicht als quellenunabhängig gedacht ist. es fragt ausschließlich Hadoop ab.

HAWQ für Pivotal HD: Pivotal bietet eine eigene Hadoop-Distribution (Pivotal HD), und HAWQ ist eine proprietäre Komponente zum Ausführen von SQL-Abfragen in HDFS. Folglich handelt es sich um ein reines Pivotal-Produkt, obwohl Pivotal aufgrund seiner parallelen SQL-Verarbeitung und der hohen Einhaltung der SQL-Standards stumpft.

Presto: Diese Open-Source-Abfrage-Engine wurde von den Ingenieuren von Facebook entwickelt und intern in diesem Unternehmen verwendet. Sie erinnert insofern an Apache Drill, als sie quellenunabhängig ist. Es kann sowohl Hive als auch Cassandra mit ANSI-SQL-Befehlen abfragen, und Entwickler können das System erweitern, indem sie über die Schnittstelle des Dienstanbieters Konnektoren dafür schreiben. Einige Funktionen zum Einfügen von Daten werden unterstützt, sind aber immer noch sehr einfach: Sie können keine Aktualisierungen durchführen, sondern nur Einfügungen.

Oracle Big Data SQL: Es war nur eine Frage der Zeit, bis Oracle ein eigenes SQL-Abfrage-Frontend für Hadoop veröffentlichte. Wie Drill kann es sowohl Hadoop als auch andere NoSQL-Stores abfragen. Im Gegensatz zu Drill handelt es sich jedoch um ein Oracle-eigenes Produkt, das nur in Oracle Database 12c und höher integriert werden kann, was den Markt für dieses Produkt erheblich einschränkt.

IBM BigSQL: Es war nur eine Frage der Zeit, bis IBM dasselbe tat, obwohl es Anfang 2013 die erste Technologievorschau von BigSQL ankündigte. Leider ist es wie das Angebot von Oracle an ein bestimmtes IBM Produkt im Backend gebunden - In diesem Fall IBMs Hadoop, InfoSphere BigInsights. Das Front-End kann jedoch ein Standard-JDBC / ODBC-Client sein, und Abfragen können Daten von IBM DB2-, Teradata- oder PureData Systems for Analytics-Instanzen enthalten.