Suchen

Datenanalysen für Big Data mit SQL durchführen Apache Phoenix – OLTP und Analyse für Hadoop

| Autor / Redakteur: Thomas Joos / Nico Litzel

Apache Phoenix dient als Schnittstelle für relationale Datenbanken auf Basis von HBase. Phoenix kann SQL-Abfragen durchführen und HBase-Tabellen verwalten. Wir zeigen, was die Software kann.

Firmen zum Thema

Das Logo von Apache Phoenix
Das Logo von Apache Phoenix
(Bild: The Apache Software Foundation)

Apache Phoenix ist ein Tool, mit dem Unternehmen im Big-Data-Bereich verschiedene Aufgaben zum Auslesen von Datenbankdateien durchführen können. Apache Phoenix arbeitet, einfach ausgedrückt, als JDBC-Treiber. Dieser kann SQL-Abfragen durchführen lassen und HBase-Tabellen aktualisieren und verwalten. Apache Phoenix arbeitet mit verschiedenen Tools im Big-Data-Bereich zusammen.

Dazu gehören auch Apache Spark und Hadoop. Apache kann Daten aus Datenbanken auslesen und dabei auch Tabellenspalten mit Views erstellen. Da Phoenix beim Einsatz in Big-Data-Umgebungen einen wichtigen Faktor darstellen kann, zum Beispiel dadurch, dass SQL-Abfragen für HBase möglich gemacht werden, nutzen auch große Unternehmen wie Dell, eBay und Intel die Lösung.

Apache Phoenix ist Open Source. Durch seine Funktionen ermöglicht die Analyselösung massiv parallele, relationale Datenbankabfragen, unterstützt OLTP für Hadoop und nutzt Apache HBase als Backup-Speicher. Phoenix ermöglicht Entwicklern den Zugriff auf große Datenmengen in Echtzeit mit vertrauten SQL-Schnittstellen und -Befehlen. Mit Apache Phoenix lassen sich Standard SQL- und JDBC-APIs mit vollständigen ACID-Transaktionsmöglichkeiten nutzen. Auf Daten die in anderen Hadoop-Produkten wie Spark, Hive, Pig, Flume und MapReduce gespeichert und produziert werden, kann Phoenix vollständig zugreifen.

Hohe Geschwindigkeit bei Abfragen aus HBase

Phoenix wird vor allem eingesetzt, weil die Abfragen sehr schnell durchgeführt werden können. Die Entwickler geben an, dass vollständige Tabellenscans in wenigen Sekunden abgeschlossen sind. Die Abfragezeit reduziert sich auf wenige Millisekunden, wenn die Abfrage einen Filter auf Schlüsselspalten enthält. Für Filter auf Nicht-Schlüsselspalten kann ein Index auf diese Spalten hinzugefügt werden.

Dadurch kann die Leistung auf die gleiche Ebene gehoben werden, die der Filterung auf Schlüsselspalten entspricht. Phoenix teilt Anfragen auf und führt sie parallel auf dem Client mit einer konfigurierbaren Anzahl von Threads aus. Das erhöht die Leistung weiter. Die Aggregation erfolgt in einem Coprozessor auf der Serverseite. Dieser reduziert die Datenmenge, die an den Client zurückgegeben wird.

Mit Apache Phoenix lassen sich SQL-Abfragen für HBase durchführen

Apache Phoenix bietet also Funktionen aus SQL für NoSQL-Datenbanken, allen voran die Hadoop Database (HBase). HBase speichert Daten zwar generell so, dass sie grundsätzlich mit SQL auslesbar sind, bietet selbst aber keine eigene SQL-Syntax und keine Abfragesprache. Hier soll Phoenix helfen. Dazu kann Phoenix SQL-Abfragen in HBase-Scans umwandeln und deren Durchführung verwalten und überwachen. Das Resultat sind verschiedene JDBC-Informationen. Phoenix arbeitet dazu mit der HBase-API, um Metadaten auch entsprechend so zu speichern, dass alle Abfragen korrekt durchgeführt werden können.

Alle gängigen SQL-Abfragekonstrukte werden unterstützt, einschließlich SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY und viele andere. Die Lösung unterstützt auch einen vollständigen Satz von DML-Befehlen sowie die Tabellenerstellung und versionierte inkrementelle Änderungen durch DDL-Befehle. Allerdings kann auch die aktuelle Version noch nicht alle Aktionen durchführen. Dazu gehört die fehlende Unterstützung für Vergleichsoperatoren.

Apache Phoenix ermöglicht also OLTP- und andere Analysen für Hadoop. Dazu verbindet Phoenix die Möglichkeiten von Standard-SQL- und JDBC-APIs mit umfassenden ACID-Transaktionsmöglichkeiten sowie die Flexibilität von Funktionen aus der NoSQL-Welt. Diese wird vor allem durch die Nutzung von HBase als Backup-Speicher erreicht. Apache Phoenix ist vollständig in andere Hadoop-Produkte wie Spark, Hive, Pig, Flume und MapReduce integriert. Eine Interaktion der Tools sowie ein Datenaustausch sind daher problemlos möglich.

Phoenix und HBase verbinden – Schnelleinstieg

Für die Anbindung von Phoenix an HBase wird JDBC genutzt. Ein Beispielbefehl sieht folgendermaßen aus:

Connection conn = DriverManager.getConnection("jdbc:phoenix:server1,server2:3333",props);

Die Informationen, die im Befehl nicht dabei sind, kann Phoenix aus anderen Daten herauslesen. Hier werden zum Beispiel,

hbase.zookeeper.quorumhbase.zookeeper.property.clientPort

und

zookeeper.znode.parent

aus der Konfigurationsdatei

hbase-site.xml

verwendet. Die optionale Principal- und Keytab-Datei kann verwendet werden, um eine Verbindung zu einem Kerberos-geschützten Cluster herzustellen. Jeder Benutzer hat seine eigene HBase-Verbindung (HConnection). Dadurch lassen sich mehrere, unterschiedliche Verbindungen mit jeweils unterschiedlichen Konfigurationseigenschaften auf derselben JVM erstellen. Detaillierte Informationen zur Verbindung werden in der Dokumentation von Apache Phoenix gezeigt.

Ein Schnelleinstieg kann auf der FAQ-Seite durchgeführt werden. Hier zeigen die Entwickler Codebeispiele, wie ein Verbindungsaufbau auf verschiedenen Abfragen durchgeführt werden kann.

Fazit

Apache Phoenix bringt die Vorteile von SQL in die NoSQL-Welt. Der Einsatz lohnt sich vor allem für Unternehmen, die SQL-Abfragen auf HBase-Daten oder generell in Hadoop durchführen wollen. Die Lösung ist eng in das Hadoop-Ökosystem integriert. Apache Phoenix abstrahiert den zugrunde liegenden Datenspeicher, indem es ermöglicht Daten mit Standard-SQL über JDBC-Treiber abzufragen. Apache Phoenix bietet Funktionen wie Sekundärindizes, die helfen, Abfragen zu beschleunigen, ohne sich auf bestimmte Zeilenschlüssel-Designs verlassen zu müssen.

Apache Phoenix ist außerdem massiv parallel, wo Aggregationsabfragen auf den Knoten ausgeführt werden, auf denen Daten gespeichert sind, was die Notwendigkeit, Daten über das Netzwerk zu senden, erheblich reduziert.

(ID:46281277)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist