
Ich habe eine Infrastrukturfrage zu Apache Spark, das ich in einem Greenfield-Projekt einführen möchte, bei dem (höchstens) ungefähr 4 TB Daten gleichzeitig für die Modellierung verwendet werden. Der Anwendungsbereich wird die Analytik sein, und das Training der Modelle wird wahrscheinlich über Nacht in einem Batch und nicht in Echtzeit durchgeführt.
Traditionelle dreistufige Anwendungen trennten die Datenbank- und Anwendungsseite der Arbeitslast, was bedeutete, dass zwei verschiedene Server für die Ausführung von Speicher- bzw. Rechenaufgaben optimiert werden konnten. Dies erleichtert die Architektur eines Systems, da verschiedene Anbieter (wieDell(zum Beispiel) haben für jeden Anwendungszweck optimierte Angebote.
Neue Frameworks wie Spark scheinen beide Aspekte zu kombinieren, um das Verschieben von Daten zwischen Knoten – und die dadurch verursachte Netzwerklast – zu vermeiden. Ich frage mich jedoch, wie dies auf Infrastrukturebene funktioniert.
Werden große Speicher- und Rechenkapazitäten in einem einzigen Rechner kombiniert? Wie könnte eine Standard-Systemtopologie für meine Anwendung aussehen und welche Faktoren muss ich bei der Planung berücksichtigen? Und schließlich: Gibt es Blade-Server, die sowohl eine hohe Speicherdichte als auch eine gute Rechenleistung bieten?
Ich würde idealerweise gerne mit nicht mehr als 5 Knoten arbeiten, kenne aber keine Anleitungsressourcen, die bei der Planung einer solchen Implementierung helfen könnten. Alle diesbezüglichen Vorschläge sind willkommen.
Antwort1
Ich werde meine Frage selbst beantworten, da ich einige Quellen gefunden habe. Ich werde jedoch auch alle hochwertigen Antworten, die eingehen, als solche kennzeichnen, also können Sie gerne etwas beitragen. Kommentare zu meinen Gedanken sind hier ebenfalls mehr als willkommen.
DasDer Link enthält einige Informationen zur Bereitstellung von Hardware für Spark. Soweit ich weiß, können Sie Spark grundsätzlich als Anwendungsschicht in einem dreistufigen Stapel behandeln. Sie können also (zum Beispiel) Cassandra oder HBase auf Ihren Speicherknoten ausführen und Spark auf „Anwendungs“-Knoten mit stärkeren CPUs und Speicher, aber weniger verfügbarem Speicher belassen. 10-Gbit/s-Ethernet zwischen den Knoten scheint in diesen Anwendungsfällen wichtig zu sein.
Dies wirft vermutlich die Frage auf, wie man die Verarbeitung eines sehr großen Datensatzes bewerkstelligt, wenn man bedenkt, dass man für die Verarbeitung letztlich möglicherweise immer noch Daten aus einer Hbase-Datenbank streamt. Ich denke jedoch, dass es sich hier um eine Frage der Anwendungsarchitektur handelt und daher nicht in den Rahmen dieser Site fällt.