webentwicklung-frage-antwort-db.com.de

Schnelle Hadoop-Analyse (Cloudera Impala gegen Spark / Shark gegen Apache Drill)

Ich möchte Daten in einem HDFS nahezu in Echtzeit analysieren (OLAP-ähnlich).
Meine Untersuchungen haben gezeigt, dass die drei genannten Frameworks im Vergleich zu Apache Hive signifikante Leistungssteigerungen aufweisen. Hat jemand einige praktische Erfahrungen mit einem dieser? Nicht nur in Bezug auf die Leistung, sondern auch in Bezug auf die Stabilität?

41
user2306380

Der Vergleich zwischen Hive und Impala oder Spark oder Drill klingt für mich manchmal unangemessen. Die Ziele bei der Entwicklung von Hive und diesen Tools waren unterschiedlich. Hive wurde nie für Echtzeit, in der Speicherverarbeitung und basierend entwickelt auf MapReduce. Es wurde für die Offline-Stapelverarbeitung entwickelt. Es ist am besten geeignet, wenn Sie Jobs mit langer Laufzeit benötigen, die datenintensive Vorgänge wie Verknüpfungen mit sehr großen Datasets ausführen.

Auf der anderen Seite wurden diese Tools entwickelt, um die real-timeness im Kopf. Gehen Sie für sie, wenn Sie nicht sehr große Daten abfragen müssen, die in Echtzeit in den Speicher passen können. Ich sage nicht, dass Sie mit diesen Tools keine Abfragen für Ihre BigData ausführen können, aber Sie würden die Grenzen überschreiten, wenn Sie Echtzeitabfragen für PBs von Daten ausführen, IMHO.

Sehr oft hätte man gesehen (oder gelesen), dass ein bestimmtes Unternehmen über mehrere PBs von Daten verfügt und die Echtzeitanforderungen seiner Kunden erfolgreich erfüllt. Tatsächlich fragen diese Unternehmen jedoch nicht die meiste Zeit ihre gesamten Daten ab. Also, das Wichtigste ist die richtige Planung, when to use what. Ich hoffe, Sie verstehen, worauf ich hinaus will.

Um auf Ihre eigentliche Frage zurückzukommen: Meiner Ansicht nach ist es derzeit schwierig, einen vernünftigen Vergleich anzustellen, da die meisten dieser Projekte noch lange nicht abgeschlossen sind. Sie sind noch nicht serienreif, es sei denn, Sie sind bereit, einige (oder möglicherweise viele) Arbeiten selbst auszuführen. Und für jedes dieser Projekte gibt es bestimmte Ziele, die für das jeweilige Projekt sehr spezifisch sind.

For example, Impala wurde entwickelt, um die vorhandene Hive-Infrastruktur zu nutzen, damit Sie nicht bei Null anfangen müssen. Es werden die gleichen Metadaten verwendet, die Hive verwendet. Ziel war es, Echtzeit-Abfragen über Ihr bestehendes Hadoop-Warehouse auszuführen. Während Drill entwickelt wurde, um ein not only Hadoop Projekt. Und um uns verteilte Abfragefunktionen für mehrere Big-Data-Plattformen wie MongoDB, Cassandra, Riak und Splunk bereitzustellen. Shark ist mit Apache Hive kompatibel. Dies bedeutet, dass Sie es mit denselben HiveQL-Anweisungen abfragen können, wie Sie es mit Hive tun würden. Der Unterschied besteht darin, dass Shark bis zu 30-mal schnellere Ergebnisse liefert als dieselben Abfragen, die auf Hive ausgeführt werden.

Impala geht es derzeit gut und einige Leute haben es benutzt, aber ich bin nicht so zuversichtlich, was den Rest der 2 angeht. Alle diese Tools sind gut, aber ein fairer Vergleich kann nur durchgeführt werden, nachdem Sie diese für Ihre Daten und für Ihre Daten ausprobiert haben Verarbeitungsanforderungen. Aber meiner Erfahrung nach wäre Impala in diesem Moment die beste Wahl. Ich sage nicht, dass andere Tools nicht gut sind, aber sie sind noch nicht ausgereift genug. Wenn Sie es jedoch mit Ihrem bereits laufenden Hadoop-Cluster (z. B. Apache's Hadoop) verwenden möchten, müssen Sie möglicherweise einige zusätzliche Arbeiten ausführen, da Impala fast von jedem als CDH-Feature verwendet wird.

Anmerkung: Alle diese Dinge basieren ausschließlich auf meiner Erfahrung. Wenn Sie etwas Falsches oder Unangemessenes finden, lassen Sie es mich bitte wissen. Kommentare und Vorschläge sind willkommen. Und ich hoffe, dies beantwortet einige Ihrer Fragen.

59
Tariq

Hier ist eine Antwort von "Wie vergleicht sich Impala mit Shark?" von Reynold Xin, dem Leiter der Shark-Entwicklungsbemühungen bei UC Berkeley AMPLab.

2
lf.xiao