簡體   English   中英

如何控制 Airflow 安裝的並行性或並發性?

[英]How to control the parallelism or concurrency of an Airflow installation?

在我的一些 Apache Airflow 安裝中,即使調度程序似乎沒有完全加載,計划運行的 DAG 或任務也不會運行。 如何增加可並發運行的 DAG 或任務的數量?

同樣,如果我的安裝處於高負載下,並且我想限制我的 Airflow 工作人員拉入隊列任務的速度(例如減少資源消耗),我可以調整什么來減少平均負載?

這是自 Airflow v1.10.2 以來可用的配置選項的擴展列表。 有些可以在每個 DAG 或每個操作員的基礎上設置,但在未指定時也可能回退到設置范圍的默認值。


可以在每個 DAG 的基礎上指定的選項:

  • concurrency :允許在 DAG 的所有活動運行中同時運行的任務實例數。 如果未設置,則默認為core.dag_concurrency
  • max_active_runs :此 DAG 的最大活動運行數。 一旦達到此限制,調度程序將不會創建新的活動 DAG 運行。 如果未設置,則默認為core.max_active_runs_per_dag

例子:

# Only allow one run of this DAG to be running at any given time
dag = DAG('my_dag_id', max_active_runs=1)

# Allow a maximum of 10 tasks to be running across a max of 2 active DAG runs
dag = DAG('example2', concurrency=10, max_active_runs=2)

可以在每個操作員的基礎上指定的選項:

  • pool : 在其中執行任務的可用於限制任務子集的並行性
  • task_concurrency :跨多個 DAG 運行的同一任務的並發限制

例子:

t1 = BaseOperator(pool='my_custom_pool', task_concurrency=12)

在整個 Airflow 設置中指定的選項:

  • core.parallelism :在整個 Airflow 安裝中運行的最大任務數
  • core.dag_concurrency :每個 DAG 可以運行的最大任務數(跨多個DAG 運行
  • core.non_pooled_task_slot_count :分配給不在池中運行的任務的任務槽數
  • core.max_active_runs_per_dag :每個 DAG 的最大活動 DAG運行
  • scheduler.max_threads :調度程序進程應該使用多少線程來調度 DAG
  • celery.worker_concurrency :如果使用 CeleryExecutor ,一個 worker 將一次處理的最大任務實例數
  • celery.sync_parallelism : CeleryExecutor 應該用來同步任務狀態的進程數

檢查使用core.executor的氣流配置。 SequentialExecutor 將按順序執行,因此您可以選擇並行執行任務的 Local Executor 或 Clery Executor。 之后,您可以使用@hexacyanide 提到的其他選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM