2017-02-22 2 views
0

Ich bin ein Funke Direct Stream von Kafka, wo ich viele gleichzeitige Jobs ausführen müssen, um alle Daten in der Zeit zu verarbeiten. In spark können Sie spark.streaming.concurrentJobs auf eine Anzahl gleichzeitiger Jobs setzen, die Sie ausführen möchten.Spark Direct Stream gleichzeitige Job Limit

Was ich wissen möchte, ist eine logische Möglichkeit zu bestimmen, wie viele gleichzeitige Jobs ich in meiner gegebenen Umgebung ausführen kann. Bei Datenschutzproblemen in meinem Unternehmen kann ich Ihnen nicht die Spezifikationen nennen, die ich habe, aber was ich gerne wissen würde, welche Spezifikationen relevant sind, um ein Limit zu bestimmen und warum? Die Alternative ist natürlich, dass ich sie weiter erhöhen und testen und dann basierend auf den Ergebnissen anpassen könnte, aber ich hätte gerne einen logischeren Ansatz und ich möchte wirklich verstehen, was diese Grenze bestimmt und warum.

Antwort

1

Es ist die zuverlässigste Methode, verschiedene Anzahlen gleichzeitiger Jobs zu testen und die Ausführungszeit insgesamt zu sehen. Aber ich nehme an, die beste Zahl ist ungefähr gleich dem Wert von Runtime.getRuntime().availableProcessors();

Also mein Rat ist, mit dieser Anzahl von verfügbaren Prozessoren zu beginnen, dann erhöhen und verringern Sie es um 1,2, und 3. Dann ein Diagramm (Ausführung Zeit gegen die Anzahl der Jobs) und Sie sehen die optimale Anzahl an Jobs.

+0

Ich habe Ihren Vorschlag zum Ausdruck 'Runtime.getRuntime() verwendet. AvailableProcessors();'. Ich erhielt eine Nummer, die viel höher war als das, was ich brauchte, aber es war gut, meine Obergrenzen zu kennen. Nach unzähligen Tests kam ich zu einer Nummer, die Sinn ergab. Vielen Dank. – user3124181

Verwandte Themen