2016-03-29 8 views
-2

Ich habe eine Software, die ein Bild und gibt mir einige Ergebnisse für dieses Bild und eine Datenbank, die viele Bilder enthält.Mehrere Aufgabe als eine - Apache Spark

Ich möchte eine verteilte Architektur bauen, um diese Bilder auf mehreren Servern zu verarbeiten, um Zeit zu gewinnen.

Ich habe von Spark gehört und habe danach gesucht, aber ich bin nicht sicher, ob diese Lösung gut für mich ist. Trotzdem möchte ich nichts verpassen. In der Tat, in allen Beispielen, die ich für Spark gefunden habe, es beschäftigt sich immer mit Aufgaben/Jobs, die in kleinere Aufgaben/Jobs aufgeteilt werden können. Zum Beispiel kann ein Text in mehrere kleinere Texte aufgeteilt werden und so kann die Wortanzahl einfach verarbeitet werden. Wenn ich jedoch meine Software benutze, muss ich ein ganzes Bild geben und nicht nur Teile davon.

Also, ist es möglich, Spark eine Aufgabe zu geben, die 10 Bilder enthält (zum Beispiel), und dann teilt Spark es in kleinere Aufgaben (1 Aufgabe = 1 Bild) und sendet jedes Bild an einen Arbeiter? Und wenn es möglich ist, ist das sehr effizient? Ich habe tatsächlich von Sellerie gehört und frage mich, ob diese Art von Lösung für meinen Fall besser ist.

Vielen Dank für Ihre Hilfe! :)

Antwort

0

Ich denke, es hängt davon ab, was Sie mit "viele Bilder" meinen und wie oft Sie "viele Bilder" zu verarbeiten bekommen. Wenn Sie Zehntausende von Bildern haben und diese häufig erhalten, wird Spark definitiv eine gute Lösung sein.

Aus Sicht der Architektur und der Anforderungen denke ich, dass entweder Spark oder Storm die Rechnung erfüllen wird. Mein Hauptanliegen wäre, ob der Overhead gerechtfertigt ist. Dieser Vortrag ist zum Beispiel über Echtzeit-Bildverarbeitung mit Funken:

https://www.youtube.com/watch?v=I6qmEcGNgDo

Sie könnten so an diesem Quoren Faden aussehen: https://www.quora.com/Has-anyone-developed-computer-vision-image-processing-algorithms-on-Twitter-Storm

+0

Also, mit Spark, ist es nicht erforderlich, eine Aufgabe zu haben, die sein kann so oft teilen wie wir wollen? Ich meine, Texte können in kleinere Texte aufgeteilt werden, aber in meinem Fall können Bilder nicht. Aufgrund der Tatsache, dass Spark Map und Reduce verwendet, um seine Arbeit zu machen, dachte ich, dass diese Art von Job notwendig war ... In meinem Fall wird zum Beispiel keine Taste mit meinem Bild verbunden sein. Deshalb sind die 'groupBy' oder' filter' Dinge für mich nicht interessant ... – K3r1al

+0

Der Schlüssel könnte der Dateiname oder Pfad sein und der Wert ist void. Dann verarbeitet jede Task eine Datei, indem sie ihren Namen oder Pfad übernimmt und die Binärdateien aus der Datenbank lädt. Das bedeutet, dass bei diesem Ansatz die Binärdateien der Bilder nicht durch den Funken sondern nur durch die Namen verteilt werden müssen. – Klaus

+0

Ok. Ich verstehe. Aber ich denke ich, dass ich in meiner Frage nicht klar genug war. Das tut mir leid. In jedem Beispiel von Spark, sah ich, können die Aufgaben in kleinere Aufgaben aufgeteilt werden. In Wordcount können wir beispielsweise einen Text so oft wie gewünscht in kleinerem Text aufteilen. Das kommt von der Tatsache, dass Spark MapReduce verwendet. Aber in meinem Fall muss ich jede Datei nicht teilen, da die Software, die ich verwende, nur ein ganzes Bild verarbeiten kann. Ein Text -> Split -> mehrere kleinere Texte. Ein Bild -> Split -> nichts interessantes. So kann nur ein Arbeiter mit einer Datei in meinem Fall umgehen. Ist Spark noch interessant? – K3r1al