airflow常见问题汇总

本文汇总了AirFlow在实际应用中常见的问题及其解决方法,包括批量启动DAG任务、Scheduler性能优化、日志级别调整、Jinja2模板错误、依赖状态处理、Celery配置与错误、REST API调用及远程Worker日志问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AirFlow常见问题汇总

airflow常见问题的排查记录如下:


1,airflow怎么批量unpause大量的dag任务

​ 普通少量任务可以通过命令airflow unpause dag_id命令来启动,或者在web界面点击启动按钮实现,但是当任务过多的时候,一个个任务去启动就比较麻烦。其实dag信息是存储在数据库中的,可以通过批量修改数据库信息来达到批量启动dag任务的效果。假如是用mysql作为sql_alchemy_conn,那么只需要登录airflow数据库,然后更新表dag的is_paused字段为0即可启动dag任务。

示例: update dag set is_paused = 0 where dag_id like "benchmark%";


2,airflow的scheduler进程在执行一个任务后就挂起进入假死状态

出现这个情况的一般原因是scheduler调度器生成了任务,但是无法发布出去。而日志中又没有什么错误信息。

可能原因是Borker连接依赖库没安装:
如果是redis作为broker则执行pip install apache‐airflow[redis]
如果是rabbitmq作为broker则执行pip install apache-airflow[rabbitmq]
还有要排查scheduler节点是否能正常访问rabbitmq。


3,当定义的dag文件过多的时候,airflow的scheduler节点运行效率缓慢

airflow的scheduler默认是起两个线程,可以通过修改配置文件airflow.cfg改进:

[scheduler]
# The scheduler can run multiple threads in parallel to schedule dags.
# This defines how many threads will run.
#默认是2这里改为100
max_threads = 100

4,airflow日志级别更改

$ vi airflow.cfg
[core]
#logging_level = INFO
logging_level = WARNING

NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

如果把log的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出。也就是说,日志级别越高,打印的日志越不详细。默认日志级别为WARNING。

注意: 如果将logging_level改为WARNING或以上级别,则不仅仅是日志,命令行输出明细也会同样受到影响,也只会输出大于等于指定级别的信息,所以如果命令行输出信息不全且系统无错误日志输出,那么说明是日志级别过高导致的。


5,AirFlow: jinja2.exceptions.TemplateNotFound

​ 这是由于airflow使用了jinja2作为模板引擎导致的一个陷阱,当使用bash命令的时候,尾部必须加一个空格:

  • Described here : see below. You need to add a space after the script name in cases where you are directly calling a bash scripts in the bash_command attribute of BashOperator - this is because the Airflow tries to apply a Jinja template to it, which will fail.
t2 = BashOperator(
task_id='sleep',
bash_command="/home/batcher/test.sh", // This fails with `Jinja template not found` error
#bash_command="/home/batcher/test.sh ", //
03-25
### Apache Airflow 入门与使用 #### 什么是 Apache Airflow? Apache Airflow 是一个用于编排和调度任务的开源平台,特别适合于创建、调度和监控复杂的数据工作流。通过定义有向无环图(DAGs),用户可以轻松管理依赖关系并自动执行任务。 #### 如何安装 Apache Airflow? 可以通过 Python 的包管理工具 `pip` 来安装 Apache Airflow。运行以下命令即可完成安装: ```bash pip install apache-airflow ``` 此过程会下载并安装最新版本的 Airflow 及其必要的依赖项[^2]。 #### 配置 Airflow 环境 为了使 Airflow 正常运行,需要设置一些环境变量来初始化数据库和其他配置文件。通常情况下,这一步涉及以下几个操作: 1. 初始化 Airflow 数据库。 2. 创建管理员账户以便访问 Web UI。 3. 启动 Scheduler 和 Web Server 进程以分别负责计划任务和提供图形化界面支持。 具体命令如下所示: ```bash airflow db init airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com airflow webserver & airflow scheduler & ``` 这些脚本帮助开发者快速搭建起可用的服务框架[^4]。 #### 使用 DAG 文件编写工作流程 Airflow 中的核心概念之一就是 **Directed Acyclic Graph (DAG)** ,即有向无环图结构表示一系列相互关联的任务集合。每一个节点代表一项独立的工作单元或者称为 Operator;边则描述它们之间的先后顺序约束条件。 下面展示了一个简单的例子程序片段说明如何构建这样的逻辑链条: ```python from datetime import timedelta, datetime from airflow import DAG from airflow.operators.bash_operator import BashOperator default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2023, 9, 1), 'retries': 1, } dag = DAG( dag_id='example_dag', default_args=default_args, schedule_interval=timedelta(days=1)) task_1 = BashOperator(task_id='print_date', bash_command='date', dag=dag) task_2 = BashOperator(task_id='sleep_task', bash_command='sleep 5', retries=3, dag=dag) task_1 >> task_2 ``` 上述代码段展示了两个基本的操作符连接起来形成一条线性的作业链路[^1]。 #### 查看任务状态及日志 除了 CLI 工具外,Airflow 还提供了功能丰富的 GUI 页面让用户能够直观地观察到当前正在运行中的各项指标表现情况以及历史记录详情等内容。借助这个特性,工程师们可以更加便捷高效地理解决策过程中遇到的各种问题[^3]。 #### 总结 综上所述,从基础架构部署到最后实际应用开发阶段,整个生命周期都可以依靠官方文档资源学习掌握更多高级特性和最佳实践方法论[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值