2013-06-25 15 views
41

Ich möchte einige "fast Echtzeit" Datenanalyse (OLAP-like) auf die Daten in einem HDFS.
Meine Forschung zeigte, dass die drei erwähnten Frameworks signifikante Leistungssteigerungen im Vergleich zu Apache Hive melden. Hat jemand praktische Erfahrung mit einem dieser beiden? Nicht nur in Bezug auf Leistung, sondern auch in Bezug auf Stabilität?Schnelle Hadoop-Analyse (Cloudera Impala vs Spark/Shark vs Apache Drill)

Antwort

58

Der Vergleich zwischen Hive und Impala oder Spark oder Drill klingt manchmal unpassend für mich. Die Ziele hinter der Entwicklung von Hive und diesen Tools waren unterschiedlich. Hive wurde nie in Echtzeit in der Speicherverarbeitung entwickelt und basiert auf MapReduce. Es wurde für Offline-Batch-Verarbeitung ein bisschen Zeug gebaut. Dies ist am besten geeignet, wenn Sie lange laufende Jobs benötigen, die datenintensive Operationen wie Joins in sehr großen Datasets durchführen.

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

Ziemlich oft hätten Sie gesehen (oder gelesen), dass ein bestimmtes Unternehmen mehrere PBs von Daten hat und sie erfolgreich Echtzeitanforderungen ihrer Kunden bedienen. Aber tatsächlich fragen diese Firmen nicht ihre gesamten Daten die meiste Zeit ab. Also, das Wichtigste ist die richtige Planung, when to use what. Ich hoffe, du bekommst den Punkt, den ich versuche zu machen.

Zurück zu Ihrer eigentlichen Frage, aus meiner Sicht ist es schwierig, einen vernünftigen Vergleich zu diesem Zeitpunkt bieten, da die meisten dieser Projekte noch lange nicht abgeschlossen sind. Sie sind noch nicht produktionsbereit, es sei denn, Sie sind bereit, einige (oder viele) Arbeiten selbst zu machen. 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, so dass Sie nicht von vorne anfangen müssen. Es verwendet die gleichen Metadaten, die Hive verwendet. Das Ziel bestand darin, Echtzeitabfragen auf Ihrem vorhandenen Hadoop-Warehouse auszuführen. Während Drill zu einem not only Hadoop Projekt entwickelt wurde. Und um uns eine verteilte Abfragemöglichkeit über mehrere große Datenplattformen wie MongoDB, Cassandra, Riak und Splunk zu bieten. Shark ist mit Apache Hive kompatibel, was bedeutet, dass Sie es mit denselben HiveQL-Anweisungen abfragen können wie mit Hive. Der Unterschied besteht darin, dass Shark Ergebnisse bis zu 30 Mal schneller zurückgeben kann als die gleichen Abfragen, die auf Hive ausgeführt werden.

Impala ist gut in der Gegenwart und einige Leute haben es verwendet, aber ich bin nicht so zuversichtlich über den Rest der 2. Alle diese Tools sind gut, aber ein fairer Vergleich kann erst nach dem Sie diese auf Ihrem versuchen Daten und für Ihre Verarbeitungsanforderungen. Aber meiner Erfahrung nach wäre Impala in diesem Moment die beste Wahl. Ich sage nicht, dass andere Werkzeuge nicht gut sind, aber sie sind noch nicht reif genug. Aber wenn Sie es mit Ihrem bereits laufenden Hadoop-Cluster (Apache-Hadoop für Ex) verwenden möchten, müssen Sie möglicherweise zusätzliche Arbeit leisten, da Impala von fast allen als CDH-Funktion verwendet wird.

Hinweis: All diese Dinge basieren ausschließlich auf meiner Erfahrung. Wenn Sie etwas falsch oder unpassend finden, lassen Sie es mich bitte wissen. Kommentare und Anregungen sind willkommen. Und ich hoffe, dass dies einige Ihrer Fragen beantwortet.

+2

Thx für die umfassende Antwort. Es scheint die Ergebnisse meiner Forschung in den meisten Punkten zu bestätigen. Momentan mache ich einige meiner Anwendungsfälle in Spark, um praktische Erfahrungen zu sammeln.Für mich sieht es viel besser aus als Impala (alle wissenschaftlichen Arbeiten darüber sind verfügbar) und die API ist sauber und prägnant. Aber wir werden sehen ... Auch ich habe Hive mit den Echtzeit-Frameworks verglichen, weil sie dazu neigen, sich stattdessen mit einander zu vergleichen. Wahrscheinlich um die netten Leistungssteigerungen zu zeigen .. – user2306380

+0

Oh, absolut..Sie haben den Punkt :) .. Viel Glück mit Ihrem POC. – Tariq

+1

Eine Sache zu beachten - Impala hat eine große Einschränkung: Ihre Zwischenfrage muss in den Speicher passen. Wenn also Ihre Gruppe nach Abfrage 30 GB überschreitet (z. B. Ihr Maschinen-RAM), wird die Abfrage fehlschlagen, bevor die HAVING-Klausel angewendet wird, die sie effektiv auf 1 MB an Daten zuschneidet. Dies ist bei anderen MPP-Engines wie Apache Drill nicht der Fall. –