2016-07-05 10 views
9

Der lokale Executor erzeugt beim Planen von Tasks neue Prozesse. Ist die Anzahl der erstellten Prozesse begrenzt? Ich musste es ändern. Ich muss wissen, was ist der Unterschied zwischen Scheduler "max_threads" und "Parallelität" in der airflow.cfg?Luftstrom-Parallelität

Antwort

6

Der Scheduler max_threads ist die Anzahl der Prozesse, um den Scheduler über zu parallelisieren. Die max_threads kann die CPU-Anzahl nicht überschreiten. Der LocalExecutor ist die Anzahl gleichzeitiger Aufgaben, die der LocalExecutor ausführen sollte. Sowohl der Scheduler als auch der LocalExecutor verwenden Pythons Multiprocessing-Bibliothek für Parallelität.

+1

Ausgezeichnet, danke! – rjurney

15

Parallelität: kein sehr beschreibender Name. Die Beschreibung sagt, dass es die maximalen Aufgabeninstanzen für die Luftströmungsinstallation einstellt, was ein bisschen mehrdeutig ist - wenn ich zwei Hosts mit Luftströmungsarbeitern betreibe, würde ich Luftströmung auf zwei Hosts installiert haben, also sollten zwei Installationen sein, aber basierend auf Kontext "pro Installation" bedeutet hier "pro Airflow-Zustandsdatenbank". Ich würde diese max_active_tasks nennen.

dag_concurrency: Trotz des Namens basierend auf dem Kommentar ist dies eigentlich die Aufgabe Nebenläufigkeit, und es ist pro Arbeiter. Ich würde diesen Max_active_tasks_for_worker nennen (per_worker würde vorschlagen, dass es sich um eine globale Einstellung für Arbeiter handelt, aber ich denke, dass Sie Arbeiter mit verschiedenen Werten für diese Einstellung haben können).

max_active_runs_per_dag: Dieses ist irgendwie in Ordnung, aber da es nur einen Standardwert für die passende DAG kwarg zu sein scheint, könnte es schön, dass im Namen zu reflektieren, so etwas wie default_max_active_runs_for_dags also lasst uns den Umzug auf Dag kwargs:

Nebenläufigkeit: Noch einmal, mit einem allgemeinen Namen wie diesem, gekoppelt mit der Tatsache, dass Nebenläufigkeit für etwas anderes anderswo verwendet wird, macht dies ziemlich verwirrend. Ich würde das max_active_tasks nennen.

max_active_runs: Das klingt gut für mich.

Quelle: https://issues.apache.org/jira/browse/AIRFLOW-57


max_threads gibt dem Benutzer eine gewisse Kontrolle über die CPU-Auslastung. Es spezifiziert die Scheduler-Parallelität.

+0

Gibt es eine Möglichkeit, die Parallelität pro Aufgabe anzugeben? Ich finde, wenn ich etwas wie das Herunterladen von Daten von einem SFTP wiederfülle, möchte ich, dass die Parallelität 4 oder 5 ist. Wenn ich jedoch die Daten lade, möchte ich, dass es nur 1 ist (wenn es mehr als eins ist, die Auftragsdaten) Im Moment habe ich SERIAL-Tasten, die außer Betrieb sind, weil ich vergessen habe, die Parallelität wieder auf 1 zu stellen, was etwas nervig ist) – trench

+0

Ein Luftstrom-Arbeiter kann sich auf einer separaten Maschine befinden, ohne von einem separaten Luftstrom abzulaufen Datenbankinstanz. Ich führe meine Airflow-Arbeiter in Docker, ich gebe ihnen eine Warteschlange URL und eine DB-URL und es funktioniert super! – Sethish