2013-06-14 5 views
13

Ich würde gerne Ihre Gedanken und Erfahrungen über die Verwendung von CQL und In-Memory-Abfrage-Engine Spark/Shark hören. Soweit ich weiß, läuft der CQL-Prozessor in Cassandra JVM auf jedem Knoten. Der Shark/Spark-Abfrageprozessor, der mit einem Cassandra-Cluster verbunden ist, läuft außerhalb in einem separaten Cluster. Darüber hinaus verfügt Datastax über die DSE-Version von Cassandra, mit der Hadoop/Hive bereitgestellt werden kann. Die Frage ist, in welchem ​​Anwendungsfall wir eine spezifische Lösung anstelle der anderen wählen würden.Vergleichen von Cassandra CQL vs Spark/Shark Abfragen vs Hive/Hadoop (DSE-Version)

Antwort

31

Ich werde ein paar Gedanken basierend auf meiner Erfahrung teilen. Falls es für Sie möglich ist, teilen Sie uns bitte Ihren Anwendungsfall mit. Es hilft uns, Ihre Fragen besser zu beantworten.

1- Wenn Sie mehr Schreibvorgänge als Lesen haben, ist Cassandra offensichtlich eine gute Wahl. Wenn Sie jedoch aus dem SQL-Hintergrund kommen und planen, Cassandra zu verwenden, werden Sie CQL auf jeden Fall als sehr hilfreich empfinden. Aber wenn Sie Operationen wie JOIN und GROUP BY ausführen müssen, obwohl CQL primitive GROUP BY-Anwendungsfälle durch Schreibzeit und kompakte Zeit löst, sortiert und implementiert eins-zu-viele-Beziehungen, ist CQL nicht die Antwort.

2- Spark SQL (ehemals Shark) ist sehr schnell aus zwei Gründen, In-Memory-Verarbeitung und Planung von Datenpipelines. In-Memory-Verarbeitung macht es ~ 100x schneller als Hive. Wie Hive verarbeitet Spark SQL Datentypen mit größerem Speicher als bis zu 10x schneller, dank geplanter Pipelines. Situationsverschiebungen zu Spark SQL profitieren, wenn mehrere Datenpipelines wie filter und groupBy vorhanden sind. Gehen Sie dafür vor, wenn Sie Ad-hoc-Abfragen in Echtzeit benötigen. Nicht geeignet, wenn Sie lange Jobs über riesige Datenmengen benötigen.

3- Hive ist im Grunde ein Warehouse, das auf Ihrem vorhandenen Hadoop-Cluster ausgeführt wird und Ihnen eine SQL-ähnliche Schnittstelle für die Verarbeitung Ihrer Daten bietet. Aber Hive eignet sich nicht für Echtzeitanforderungen. Es eignet sich am besten für die Offline-Stapelverarbeitung. Benötigt keine zusätzliche infra, da es das zugrunde liegende HDFS für die Datenspeicherung verwendet. Gehen Sie dafür vor, wenn Sie Operationen wie JOIN, GROUP BY usw. für große Datasets und für OLAP ausführen müssen.

Note : Spark SQL emuliert das Verhalten von Apache Hive zusätzlich zu Spark, sodass es praktisch alle Hive-Funktionen unterstützt, jedoch möglicherweise schneller. Es unterstützt die vorhandene Hive Query-Sprache, Hive-Datenformate (SerDes), benutzerdefinierte Funktionen (UDFs) und Abfragen, die externe Skripts aufrufen.

Aber ich denke, dass Sie in der Lage sein werden, die Vor- und Nachteile all dieser Werkzeuge richtig zu bewerten, nur nachdem Sie Ihre Hände schmutzig gemacht haben. Ich könnte nur vorschlagen, basierend auf Ihren Fragen.

Ich hoffe, dies beantwortet einige Ihrer Fragen.

P.S. : Die obige Antwort basiert ausschließlich auf meiner Erfahrung. Kommentare/Korrekturen sind willkommen.

+4

Geben Sie einen Grund für den downvote, ich werde es mit spirit..Just akzeptiert dies nicht tun, wie ein 5 Jahre alt. – Tariq

+1

Entschuldigung, es war ungewollt. Ich bemerkte nicht einmal, dass ich es getan hatte, bis ich heute wieder eingecheckt hatte. – Gavin

+0

-1 Spark SQL (ehemals Shark) kompiliert SQL zu RDD-Operationen oberhalb von Spark und bietet Funktionen zum Kompilieren von HiveQL zu Sparks RDD-Operationen, anstatt Operationen über Hadoop abzubilden und zu reduzieren. Spark befindet sich nicht nur im Speicher, es verarbeitet auch Datensätze, die 10-mal schneller auf die Festplatte ausgelagert wurden. –