【问题标题】:Airflow dag bash task lag on remote executionsAirflow dag bash 任务滞后于远程执行
【发布时间】:2017-11-07 23:06:33
【问题描述】:

我正在尝试使用 Airflow 来替换我们现有的 cron 编排,一切看起来都很有希望。我已成功安装并获得了要安排和执行的 dag,但我注意到它们是我指定的每个任务之间的显着延迟(至少 15 分钟到 60 分钟)。

我的dag定义如下

我是否遗漏了一些东西让它们一个接一个地运行?

我没有用芹菜 调度程序和网络服务器都在同一台主机上运行 是的 - 需要调用远程执行(在那之前在某种形式的本地工作) 并且没有不能在远程服务器上安装气流 Dag 应该每天凌晨 1 点 UTC 运行一次,按照我给它的任务设置路径。

import airflow
from builtins import range
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.models import DAG
from datetime import datetime, timedelta

args = {
    'owner': 'user1',
    'depends_on_past': False,
    'start_date': airflow.utils.dates.days_ago(2),
    'email': ['data-etl-errors@user1.com'],
    'email_on_failure': True,
    'email_on_retry': False,
    'wait_for_downstream': True,
    'schedule_interval': None,
    'depends_on_past': True,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

 dag = DAG(
       dag_id='airflow_pt1'
     , default_args=args
     , schedule_interval='0 1 * * *'
     , dagrun_timeout=timedelta(hours=8))

 task1 = BashOperator(
       task_id='task1'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task1.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task2 = BashOperator(
       task_id='task2'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task2.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task3 = BashOperator(
       task_id='task3'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task3.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task4 = BashOperator(
       task_id='task4'
     , bash_command='ssh user1@remoteserver /path/to/remote/execution/script_task4.sh'
     , dag=dag,env=None, output_encoding='utf-8')

 task2.set_upstream(task1)
 task3.set_upstream(task1)
 task4.set_upstream(task2)

注意我没有执行气流回填(这很重要吗?)

【问题讨论】:

  • 我不确定directed-acyclic-graphs 标签是否适合此处——图论中的主题专业知识无法帮助某人回答这个问题,因此在他们的提要中关注该标签的人可能会发现他们对这个问题不感兴趣,除非他们关注airflow
  • 顺便说一句,您确定任务在您期望它们完成时实际上正在退出吗?你检查过进程表吗?
  • 我有,任务监视器上捕获的日志/标准输出很好地显示出来。我很好奇调度程序是否需要多个工作人员来排队后续任务
  • stdout 看起来很完整是件好事,但是你有没有验证过这个过程实际上已经退出了? SSH 进程有时会在操作结束时挂起,例如,如果它们留下的任何子进程都持有连接的 stdin/stdout/stderr 上的打开文件描述符。

标签: python scheduling directed-acyclic-graphs airflow


【解决方案1】:

发现问题 我没有在气流.cfg 文件中将配置从顺序更改为 localExecutor

我通过https://stlong0521.github.io/20161023%20-%20Airflow.html找到了答案

并在https://www.youtube.com/watch?v=Pr0FrvIIfTU观看详细视频

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多