cassandra und hadoop - Echtzeit vs. batch
Cassandra verfolgt etwas andere Lösungen als Hadoop. Cassandra zeichnet sich bei der high-volume real-time transaction processing, während Hadoop zeichnet sich bei der mehr batch-orientierte analytische Lösungen.
Was sind die Unterschiede in der Architektur/Implementierung von Cassandra und Hadoop, welches Konto für diese Art von Unterschied in der Verwendung ist. (in Laien-software professionelle Bedingungen)
- Cassandra hat die Unterstützung für Hadoop - wiki.apache.org/cassandra/HadoopSupport
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vanille hadoop besteht aus einem Verteilten Dateisystem (DFS) im Kern und Bibliotheken zu unterstützen, Karte Reduzieren-Modell, um Programme schreiben zu tun Analyse. DFS ist, was ermöglicht Hadoop skalierbar sein. Es kümmert sich um die Segmentierung der Daten in mehrere Knoten in einem multi-node-cluster so, dass die Karte Reduzieren können auf die einzelnen Teile der Daten-Knoten ermöglichte so die Parallelität.
Dem Papier für Google File System, welche die Grundlage für Hadoop Distributed File System (HDFS) kann gefunden werden hier
Das Papier für Karte Reduzieren-Modell gefunden werden kann hier
Für eine detaillierte Erklärung auf der Landkarte zu Reduzieren, Lesen Sie diese post
Cassandra ist eine hoch skalierbare, schließlich konsistente, verteilte, strukturierte Schlüssel-Wert-Speicher. Es ist nicht mit einer herkömmlichen Datenbank, sondern ist mehr wie Hashtable oder HashMap speichert Schlüssel/Wert-paar. Cassandra arbeitet über HDFS und macht es zu skalieren. Sowohl Cassandra und HBase sind Implementierungen von Google BigTable. Papier für Google BigTable finden hier.
BigTable nutzt eine Zeichenfolge Sortiert-Tabelle (SSTable) zum speichern von Schlüssel/Wert-Paaren. SSTable ist nur eine Datei in HDFS speichert, Taste, gefolgt von dem Wert. Außerdem BigTable verwaltet einen index, dessen Schlüssel-und offset in der Datei für diese Taste ermöglicht das Lesen des Wertes für diesen Schlüssel verwenden nur eine suchen, um die offset-Position. SSTable ist effektiv unveränderlich, das heißt, nach dem erstellen der Datei gibt es keine änderungen kann getan werden, um bestehende Schlüssel/Wert-Paaren. Neue Schlüssel/Wert-Paare werden an die Datei angehängt. Update und Löschen der Datensätze an die Datei angehängt, update mit einem neueren Schlüssel/Wert und die Löschung mit einem Schlüssel und tombstone-Wert. Doppelte Schlüssel sind nicht erlaubt, diese Datei für die SSTable. Der index wird auch verändert, wenn update-oder delete-stattfinden, so dass offset für die wichtigsten Punkte, um den letzten Wert oder veralteten Wert.
Damit Sie sehen können, Cassandras internen erlauben schnelles Lesen/schreiben, die ist entscheidend für die Echtzeit-Datenverarbeitung. In der Erwägung, dass Vanille Hadoop mit Karte Reduzieren können verwendet werden, um batch-orientierten Prozess passive Daten.
Wollte ich hinzufügen, weil ich denke, es könnte eine irreführende Aussage hier sagen, Cassandra könnte gut liest.
Cassandra ist nicht sehr gut zufällig liest entweder, es ist gut, im Vergleich zu anderen Lösungen gibt, wie kann Sie Lesen zufällig über eine riesige Menge an Daten, aber an einem gewissen Punkt, wenn die reads sind wirklich zufällig, Sie können nicht vermeiden, auf die Festplatte jedes einzelne Zeit, die ist teuer, und es kann nach unten kommen, um etwas nutzlos, wie ein paar tausend hits/Sekunde, je nach Ihrem cluster, so planen viele zufällige Anfragen vielleicht nicht die beste, Sie werden in eine Wand laufen, wenn Sie beginnen, so zu denken. Ich würde sagen, alles, was in big data funktioniert besser, wenn Sie sequentiell liest oder einen Weg finden, um nacheinander zu speichern. Die meisten Fälle selbst wenn Sie in der Echtzeit-Verarbeitung Sie wollen immer noch, einen Weg zu finden, um Ihre batch-Abfragen.
Dies ist, warum Sie benötigen, um denken Sie vorher, was Sie speichern unter einem Schlüssel und versuchen Sie, die meisten Informationen möglich, aus einem Lesen.
Es ist auch irgendwie komisch, diese Aussage sagt-Transaktion und Cassandra im gleichen Satz, dazu führen, dass wirklich nicht passiert.
Auf der anderen Seite hadoop ist gemeint Stapel schon fast durch definition, sondern hadoop ist eine verteilte Karte reduzieren framework, nicht eine db, in der Tat, ich habe gesehen und verwendet viel von hadoop über cassandra, Sie sind nicht antagonistisch Technologien.
Der Umgang mit Ihren big-data in Echtzeit ist machbar, aber erfordert gutes denken und sich kümmern, Wann und wie Sie auf die Datenbank.
Edit: Entfernt sekundäre Indizes Beispiel, als ich das Letzte mal überprüft, dass die verwendeten random liest (obwohl ich ve wurde Weg von Kassandra für mehr als ein Jahr jetzt).
Hadoop besteht aus zwei grundlegenden Komponenten: verteilter datenspeicher (HDFS) und distributed computation framework (MapReduce). Es liest eine Reihe von input-Daten, dann schreibt die Ausgabe von/auf den datastore. Es braucht distributed datastore-da führt es parallel computing mit den lokalen Daten auf cluster von Maschinen zu minimieren, die Daten Ladezeit.
Während Cassandra ist der datastore mit linearer Skalierbarkeit und Fehlertoleranz-Fähigkeit. Es fehlt die parallele Berechnung Fähigkeit zur Verfügung gestellt von MapReduce in Hadoop.
Die Standard-datastore - (HDFS) Hadoop ersetzt werden können mit anderen Speicher-backend, wie Cassandra, Glusterfs, Ceph, Amazon S3, Microsoft Azure-Datei-system, MapR ' s FS, und etc. Aber jeder alternativen hat Ihre vor-und Nachteile, Sie sollten bewertet werden, basierend auf den Anforderungen.
Gibt es einige Mittel, die helfen, die Integration von Hadoop mit Cassandra: http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configHadoop.html