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?
bigdata
apache-hadoop
Weiß nicht viel
quelle
quelle
Antworten:
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
SparkContext
und ein separates verwendenStreamingContext
, um verschiedeneRDD
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
RDD
s abfragen können . Der triviale Fall wäre nur fürunion
beide:Oder Sie können ein neues erstellen
DStream
, ähnlich wiestateStream
im verknüpften Beispiel, in dem einige Schlüssel für Echtzeitergebnisse und andere für Stapelergebnisse aufbewahrt werden.quelle
Nach meinem Verständnis der Ziele der Lambda-Architektur ist Ihr Punkt:
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.
Weitere Informationen finden Sie unter http://lambda-architecture.net/ .
quelle