Lambda-Architektur - Implementieren der Zusammenführungs- / Abfrageebene

7

Ich lese über Lambda-Architektur.

Es ergibt Sinn. Wir haben warteschlangenbasierte Datenaufnahme. Wir haben einen In-Memory-Speicher für Daten, der sehr neu ist, und wir haben HDFS für alte Daten.

Wir haben also unseren gesamten Datensatz. in unserem System. sehr gut.

Das Architekturdiagramm zeigt jedoch, dass die Zusammenführungsschicht sowohl die Batch-Schicht als auch die Geschwindigkeitsschicht auf einmal abfragen kann.

Wie geht das?

Ihr Batch-Layer ist wahrscheinlich ein Job zur Kartenreduzierung oder eine HIVE-Abfrage. Die Geschwindigkeitsschichtabfrage ist wahrscheinlich ein Scala-Programm, das auf dem Funken ausgeführt wird.

Wie werden Sie diese nun zusammenführen?

Gibt es eine Anleitung?

Weiß nicht viel
quelle
Sie fragen wahrscheinlich die letzte bekannte Ausgabe des Stapels ab und führen keinen Stapelprozess aus.
Sean Owen
OK. Wie füge ich also die bekannte Ausgabe des Stapels mit den Streaming-Daten zusammen, die in der funkendiskreten RDD gespeichert sind?
Weiß nicht viel

Antworten:

3

Was Sie fragen, ist meines Erachtens das Hauptproblem bei der Implementierung einer Lambda-Architektur. Hier sind einige Vorschläge zur Lösung.

Die Kombination von Spark und Spark Streaming ersetzt weitgehend die ursprüngliche Lambda-Architektur (an der normalerweise Hadoop und Storm beteiligt waren). Lesen Sie hier ein Beispiel, wie Sie ein SparkContextund ein separates verwenden StreamingContext, um verschiedene RDD s zu erstellen , eines für stapelverarbeitete Ergebnisse und eines für Echtzeitergebnisse.

Nachdem Sie dies in Ihrem System repliziert haben, müssen Sie noch darüber nachdenken, wie Sie beide Arten von RDDs abfragen können . Der triviale Fall wäre nur für unionbeide:

scala> rdd1.union(rdd2).collect

Oder Sie können ein neues erstellen DStream, ähnlich wie stateStreamim verknüpften Beispiel, in dem einige Schlüssel für Echtzeitergebnisse und andere für Stapelergebnisse aufbewahrt werden.

logc
quelle
Dies bedeutet, dass die Lambda-Architektur ein bisschen luftig ist. leicht auf Folien zu sprechen und sieht hübsch aus, aber in Wirklichkeit ist es nicht so einfach zu implementieren.
Weiß nicht viel
oder eine bessere Analogie ist die Entscheidung der Mäuse, "die Katze zu glocken". tolle Architektur ... aber wer wird das machen?
Weiß nicht viel
3

Nach meinem Verständnis der Ziele der Lambda-Architektur ist Ihr Punkt:

Ihr Batch-Layer ist wahrscheinlich ein Job zur Kartenreduzierung oder eine HIVE-Abfrage.

Ist nicht das, was beabsichtigt war. Die Batch-Schicht soll nicht direkt abgefragt werden, sondern speist eine Serving-Schicht, möglicherweise einen einfachen Schlüsselwertspeicher, für Abfragen mit geringer Latenz.

Lambda-Architekturdiagramm

Weitere Informationen finden Sie unter http://lambda-architecture.net/ .

dvdnglnd
quelle