由于执行方面的某些限制,我们在Airflow 1.10.0中放弃了Celery Executor,现在我们正在使用KubernetesExecutor
。
现在,即使我们直接在代码中更改https://github.com/apache/incubator-airflow/blob/v1-10-stable/airflow/operators/subdag_operator.py#L38
,也无法并行处理某些DAG中的所有任务。我们的期望是,通过这些修改和使用Kubernetes Executor,我们可以同时展开所有任务的执行,但是我们的行为与subdag_operator
相同。
这是我们目前的行为:
我们希望使用SequentialExecutor
同时执行所有操作。
答案 0 :(得分:1)
Airflow 中的 Kubernetes Executor 会将所有第一级任务转换为具有 Local Executor 的工作 Pod。
这意味着您将让 Local Executor 执行您的 SubDagOperator
。
为了在生成工作 Pod 后运行 SubDagOperator 下的任务,您需要为工作 Pod 指定配置 parallelism
。因此,如果您将 YAML 格式用于工作 Pod,则需要将其编辑为类似这样的内容。
apiVersion: v1
kind: Pod
metadata:
name: dummy-name
spec:
containers:
- args: []
command: []
env:
###################################
# This is the part you need to add
###################################
- name: AIRFLOW__CORE__PARALLELISM
value: 10
###################################
- name: AIRFLOW__CORE__EXECUTOR
value: LocalExecutor
# Hard Coded Airflow Envs
- name: AIRFLOW__CORE__FERNET_KEY
valueFrom:
secretKeyRef:
name: RELEASE-NAME-fernet-key
key: fernet-key
- name: AIRFLOW__CORE__SQL_ALCHEMY_CONN
valueFrom:
secretKeyRef:
name: RELEASE-NAME-airflow-metadata
key: connection
- name: AIRFLOW_CONN_AIRFLOW_DB
valueFrom:
secretKeyRef:
name: RELEASE-NAME-airflow-metadata
key: connection
envFrom: []
image: dummy_image
imagePullPolicy: IfNotPresent
name: base
ports: []
volumeMounts:
- mountPath: "/opt/airflow/logs"
name: airflow-logs
- mountPath: /opt/airflow/dags
name: airflow-dags
readOnly: false
- mountPath: /opt/airflow/dags
name: airflow-dags
readOnly: true
subPath: repo/tests/dags
hostNetwork: false
restartPolicy: Never
securityContext:
runAsUser: 50000
nodeSelector:
{}
affinity:
{}
tolerations:
[]
serviceAccountName: 'RELEASE-NAME-worker-serviceaccount'
volumes:
- name: dags
persistentVolumeClaim:
claimName: RELEASE-NAME-dags
- emptyDir: {}
name: airflow-logs
- configMap:
name: RELEASE-NAME-airflow-config
name: airflow-config
- configMap:
name: RELEASE-NAME-airflow-config
name: airflow-local-settings
然后,SubDagOperator
将按照指定的 parallelism
并行运行任务。