Antwortzeiten beschleunigen So machen Sie Hadoop Beine mit Apache Tez

Autor / Redakteur: Thomas Joos / Nico Litzel |

Apache Tez hilft Unternehmen dabei Anwendungen, zu entwickeln, die zusammen mit Hadoop, Yarn, Hive und Pig eine effiziente Big-Data-Umgebung bieten. Die ursprünglich von Hortonworks entwickelte Anwendung unterstützt Directed Acyclic Graph (DAG) und soll, einfach ausgedrückt, eine Schnittstelle für andere Big-Data-Anwendungen liefern, um deren Leistung zusammen mit Hadoop deutlich zu verbessern.

Anbieter zum Thema

Tez fasst die Datenverarbeitung in Form eines einzigen Tez-Jobs zusammen, für die zuvor mehrere MapReduce-Jobs notwendig waren.
Tez fasst die Datenverarbeitung in Form eines einzigen Tez-Jobs zusammen, für die zuvor mehrere MapReduce-Jobs notwendig waren.
(Bild: The Apache Software Foundation)

Hadoop ist in der aktuellen Version weit mehr als ein herkömmliches Werkzeug für die bessere Verwaltung von Big Data. Das Hadoop-Ökosystem ist zu einer Art Betriebssystem für Big-Data-Umgebungen aufgestiegen und bietet eine Vielzahl an Möglichkeiten und Erweiterungen. Diese Erweiterungen lassen sich in einer Art Framework zusammen nutzen. Dabei steigt die Leistung, aber auch die Effektivität der Umgebung an. Eine dieser Lösungen ist Apache Tez.

Tez wurde nicht für Endanwender in Big-Data-Umgebungen zur Verfügung gestellt, sondern für Entwickler, die Abfragen und Jobs effizienter erstellen wollen. Vor allem wenn es um die Verarbeitung von Daten in Echtzeit oder zumindest nahezu in Echtzeit geht, müssen Entwickler in Standard-Hadoop-Umgebungen nacharbeiten, damit die Leistung von Abfrage-Jobs akzeptabel ist. Genau für diese Einsatzzwecke wurde Tez entwickelt. Auch Apache Hive und Pig setzen beim Abfragealgorithmus mittlerweile nicht mehr auf MapReduce, sondern auf Tez.

Darum ist Tez schneller als MapReduce

Tez baut auf Yarn auf und wird auch durch Yarn gesteuert. Unternehmen müssen für den Einsatz von Tez auf ihrem Hadoop-Cluster keinerlei Einstellungen ändern oder Software installieren. Tez ist ein Client-Programm, welches sehr einfach implementiert werden kann. Entwickler müssen nur die notwendige Tez-Bibliothek in HDFS hochladen und danach mit dem Tez-Client eine Verbindung aufbauen. Tez kann jeden MapReduce-Job ohne Modifikationen ausführen. Das erleichtert die Migration zu Tez und bietet eine sehr schnelle Integration der Umgebung. Entwickler können mehrere MapReduce-Jobs in einen Tez-Job überführen und dadurch enorm die Leistung steigern. Während jeder Mapreduce-Job seine Ergebnisse in HDFS speichern muss, benötigt der Tez-Job für seine Ausführung keinen schreibenden Zugriff auf HDFS. Auch das beschleunigt die Ausführung enorm.

Schnellere Datenverarbeitung mit Tez

Apache Tez erweitert Hadoop in einem wichtigen Bereich, nämlich der Schnittstelle zwischen der Datenverarbeitung und den interaktiven Anwendungen.

Da das Tool mittlerweile als Toplevel-Produkt aufgenommen wurde, ist auch der Einsatz in produktiven Big-Data-Umgebungen sinnvoll. Viele große Unternehmen arbeiten mittlerweile mit Apache Tez und helfen auch bei der Weiterentwicklung, zum Beispiel Facebook, LinkedIn, Microsoft oder Twitter und Yahoo. Aber auch die NASA und Netflix nutzen Tez.

Entwickler können mit Apache Tez Anwendungen oder Batch-Dateien für die Datenverarbeitung erstellen und dabei auf die APIs von Tez setzen. Das verbessert nicht nur die Leistung der Anwendungen, sondern erleichtert auch deutlich die Entwicklung. Tez setzt dabei auf Yarn auf und arbeitet direkt mit der Hadoop-Erweiterung zusammen. Tez kann MapReduce ersetzen und dabei auch auf mehrere Hadoop-Cluster parallel zugreifen, die in verschiedenen Rechenzentren verteilt sind.

Unterstützung von Pig und Hive

Da MapReduce mittlerweile für viele Anforderungen nicht genügend Leistung bietet, ersetzen viele Unternehmen seit Hadoop 2 diese Funktion in Hadoop. Apache Pig und Hive nutzen ebenfalls Tez. Netzflix setzt seit einiger Zeit auf Apache Pig und konnte durch die Umstellung auf die Kombination Tez/Pig die Leistung mehr als verdoppeln. Profis schätzen an dem Projekt, dass Abfragen interaktiver und schneller durchführbar sind, als durch den eher starren Batch-Ansatz von MapReduce. Das ist auch der Grund, warum die NASA das Produkt für die Berechnung von Klima-Szenarien nutzt.

Apache Hive bietet die Möglichkeit, SQL-Abfragen für Hadoop-Datenbanken zu erstellen. Dazu wird der MapReduce-Ansatz verwendet. Da sich hier ebenfalls Tez einbinden lässt, steigt auch in diesem Bereich deutlich die Leistung.

Tez versus Spark

Vielen Unternehmen stellt sich auch die Frage, ob sie auf Apache Tez oder auf Spark setzen sollen. Spark und Tez arbeiten optimal mit Hive zusammen, beide bieten Directed Acyclic Graphs.

Im Grunde genommen kann auch Spark viele der Funktionen in Hadoop einbringen, die auch Tez kann. Sowohl Spark, als auch Tez unterstützen Directed Acyclic Graphs. Beide Erweiterungen arbeiten optimal mit Hive und Yarn zusammen, bieten In-Memory-Technologien, können alle Arten und Daten verarbeiten und sind auch ansonsten recht ähnlich im Funktionsumfang.

Setzen Unternehmen aber auf eine Umgebung mit Hive und Pig, so kann es sinnvoll sein, die in diesen beiden integrierte Tez-Erweiterung als Backend für MapReduce zu nutzen.

Sollen direkt die APIs genutzt werden, zum Beispiel um einen Data-Transformation-Job zu erstellen, empfehlen viele Big-Data-Profis, einen Distributed-Machine-Learning-Algorithmus zu implementieren.

Hier ist Spark häufig besser geeignet als Tez. Auch beim Erstellen einer eigenen Data Processing Language kann Spark oft sinnvoll sein, da die APIs für viele Entwickler schnell umsetzbar sind. Tez ist vor allem für die Zusammenarbeit mit Pig/Hive optimiert, lässt sich teilweise aber dafür etwas komplizierter in die Umgebung einbinden. Arbeiten Unternehmen mit Pig, hat Tez oft die Nase vorne, da die Kooperation von Spark/Pig noch nicht ideal gelöst ist.

Yarn ist Pflicht

Spark arbeitet mit Yarn zusammen, lässt sich grundsätzlich aber auch ohne Yarn nutzen. Das ist ein großer Unterschied zu Tez. Denn Tez baut immer auf Yarn auf und lässt sich ohne Yarn kaum bis gar nicht einsetzen. Dafür benötigt Tez keinerlei Container, sondern nur den Application Manager im Hadoop-Cluster. Container lassen sich zwar anbinden, aber nur aus Optimierungsgründen, nicht als Voraussetzung.

Aber auch hier müssen Entwickler selbst entscheiden, welche Technik besser passt. Beide Erweiterungen können Daten von Hadoop lesen und schreiben. Dazu bieten beide Open-Source-Lösungen eine vollständige Unterstützung für MapReduce in so gut wie allen Formaten. Im Fokus von Tez liegt die höhere Geschwindigkeit der Abfragen, im Gegensatz zu MapReduce. Das spielt vor allem für Hive und Pig eine wichtige Rolle.

Das ist auch der Grund, warum in vielen Fällen Hive, Pig und Tez in einem Atemzug genannt werden, wenn es um die Verbesserung und Optimierung von Hadoop-Umgebungen geht. Aber auch Spark bietet eine sehr gute Leistung. Außerdem verfügt Spark über eine effiziente API mit einem großen Satz an unterstützten Operatoren. Spark bietet mit REPL eine beliebte interactive Shell. Interessant ist auch die Python API. Aber auch hier spielen persönliche Geschmäcker eine wichtige Rolle. Tatsache ist, dass sowohl Tez als auch Spark für identische Einsätze entwickelt wurden und einen echten Mehrwert für Hadoop-Umgebungen liefern.

Fazit

Spark ist älter und teilweise ausgereifter, Tez bietet in Teilen bessere Leistung. Allerdings gibt es keine objektiven, zuverlässigen Leistungsvergleiche. Unternehmen müssen selbst testen, welche der beiden Lösungen ideal für ihre Umgebung ist. Aus diesem Grund sollten Unternehmen, die auf Big Data setzen, immer beide Lösungen parallel betrachten. Tez spielt immer dann seine Stärken aus, wenn sehr große Datenmengen in kurzer Zeit verarbeitet werden sollen und eine skalierbare Umgebung gefragt ist.

(ID:43522079)