2014-03-30 10 views
6

Ich untersuche gerade, wie man angereicherte zeitbasierte Daten mit bis zu 1000 Spalten pro Zeile speichert und analysiert. Im Moment scheint Cassandra zusammen mit Solr, Hadoop oder Spark von Datastax Enterprise meine Anforderungen an das Rough zu erfüllen. Aber der Teufel steckt im Detail.Cassandra + Solr/Hadoop/Spark - Auswahl der richtigen Werkzeuge

Von den 1000 Spalten werden etwa 60 für echtzeitähnliche Abfragen verwendet (Web-Frontend, Benutzer sendet Formular und erwartet eine schnelle Antwort). Diese Abfragen sind mehr oder weniger GROUPBY-Anweisungen, bei denen die Anzahl oder Vorkommen gezählt werden.

Als Cassandra selbst nicht die erforderlichen analytischen Fähigkeiten bietet (kein GROUPBY), bin ich diese Alternativen links:

  • Grob Abfrage über Cassandra und Filtern der Suchresultates in selbstgeschriebenen Code
  • Index der Daten mit Solr und laufen facet.pivot fragt
  • Verwenden Sie entweder Hadoop oder Funken und die Abfragen ausführen

Der erste Ansatz scheint umständlich und fehleranfällig s ... Solr hat einige analytische Eigenschaften, aber ohne Multifield-Gruppierung bin ich mit Pivots festgefahren. Ich weiß nicht, ob das ein guter oder performanter Ansatz ist ... Zu guter Letzt gibt es Hadoop und Spark, die bekanntlich nicht die besten für Echtzeit-Abfragen sind, die später ziemlich neu und vielleicht nicht produktionsreif sind.

Also welcher Weg zu gehen? Hier gibt es keinen Alleskönner, aber bevor ich in die andere Richtung gehe, möchte ich ein Feedback bekommen. Ich denke, um komplexe oder meine Erwartungen zu hoch sind vielleicht: S

Vielen Dank im Voraus,

Arman

+0

Hallo, ich bin nur neugierig zu erfahren, Wenn Sie irgendeine spezielle Strategie verwendet haben, bitte am Ende? Vielen Dank. – tarilabs

+0

Leider nein. Teilweise, weil sich das Projekt in der Mitte änderte ... Seit meinem Post hier haben Solr und Spark viele Updates erhalten. Der Solr-Weg funktioniert gut, wenn der Index intakt ist, was schwer ist ... Spark auf der anderen Seite sollte die Arbeit besser machen als Hadoop, aber ich hatte keine Zeit, es zu überprüfen. – Arman

Antwort

1

Ich würde Funken empfehlen, wenn Sie eine Beute an den list of companies using it nehmen Sie werde solche Namen als Amazon, eBay und Yahoo!. Wie Sie im Kommentar angemerkt haben, wird es zu einem ausgereiften Werkzeug.

Sie haben schon Argumente gegen Cassandra und Solr gegeben, deshalb werde ich mich darauf konzentrieren, zu erklären, warum Hadoop MapReduce nicht so gut funktioniert wie Spark für Echtzeit Abfragen.

Hadoop und MapReduce waren entworfen Festplatte unter der Voraussetzung zu nutzen, dass für große Daten-IO vernachlässigbar ist. Als Ergebnis werden Daten mindestens zweimal gelesen und geschrieben - im Kartenstadium und in der Reduzierungsstufe. Dies ermöglicht es Ihnen, sich von Fehlern zu erholen, als Teilergebnis gesichert sind, aber es ist nicht wollen Sie wollen, wenn Echtzeit Abfragen abzielen.

Spark zielt nicht nur auf die Behebung von MapReduce-Unzulänglichkeiten, sondern konzentriert sich auch auf interaktive Datenanalyse, die genau das ist, was Sie wollen. Dieses Ziel wird hauptsächlich erreicht durch unter Verwendung von RAM und die Ergebnisse sind erstaunlich. Spark Jobs sind oft 10-100 mal schneller als MapReduce Äquivalente.

Die einzige Einschränkung ist die Menge an Speicher, die Sie haben. Höchstwahrscheinlich Ihre Daten werden wahrscheinlich im RAM feature können Sie bereitstellen, oder Sie können sich auf Stichproben verlassen.Wenn Sie interaktiv mit Daten arbeiten, müssen Sie MapReduce normalerweise nicht verwenden. In Ihrem Fall scheint dies der Fall zu sein.

2

In einem Ort, an dem ich jetzt arbeite, haben wir eine ähnliche Reihe von technischen Anforderungen und eine Lösung ist Cassandra-Solr-Spark, genau in dieser Reihenfolge.

Also, wenn eine Abfrage von Cassandra-Indizes "abgedeckt" werden kann - gut, wenn nicht - wird es von Solr abgedeckt. Zum Testen & weniger oft Abfragen - Spark (Scala, keine SparkSQL aufgrund der alten Version davon - es ist eine Bank, alles sollte getestet und gereift sein, von Cognac bis Software, argh).

Im Allgemeinen ich mit der Lösung einverstanden, obwohl ich manchmal das Gefühl, dass einige Kunden-Anforderungen sollten nicht ernst genommen werden, uns von Lasten von seltsamen Anfragen Speichern :)