序言
还有另一个气流任务没有得到执行的问题...
直到这个周末,当一切真正下坡之前,一切对我的气流体验都差不多了。
我已经检查了所有标准的东西,例如如this helpful post中所述。
我已多次重置整个实例,以使其正常运行,但我在这里完全失去了战斗。
环境
问题
这是我对无限循环/重复出现的恶梦进行故障排除时发生的事情。
在我开始遇到麻烦之前,清除任务实例后,它总是很快就会被拾取并再次执行。
但是现在,清除任务实例通常会导致任务实例陷入清除状态。它只是坐在那里。
更糟糕的是,如果我尝试使dag和所有实例失败,然后再次手动触发dag,则将创建任务实例,但仍处于“无”状态。重新启动调度程序无济于事。
其他观察结果
这可能是一条红色的鲱鱼,但是我最近才注意到的一件事是,当我单击代表处于“无”状态的任务实例的图标时,它将带我进入“任务实例”视图过滤器,过滤器错误;过滤器设置为“字符串等于空”。
但是您需要将其切换为“ string empty yes”,以使其实际返回被卡住的任务实例。
我假设这只是一个不相关的UI错误,就我而言,这是一个红色的鲱鱼,但是我想以防万一。
编辑1
编辑2
null
是任务实例状态的有效值吗?还是这表明有什么问题。
编辑3
更多none
的东西。
这是任务实例详细信息页面中的一些内容。许多属性是none
:
Task Instance Details
Dependencies Blocking Task From Getting Scheduled
Dependency Reason
Unknown All dependencies are met but the task instance is not running. In most cases this just means that the task will probably be scheduled soon unless:
- The scheduler is down or under heavy load
- The following configuration values may be limiting the number of queueable processes: parallelism, dag_concurrency, max_active_dag_runs_per_dag, non_pooled_task_slot_count
- This task instance already ran and had its state changed manually (e.g. cleared in the UI)
If this task instance does not start soon please contact your Airflow administrator for assistance.
Task Instance Attributes
Attribute Value
duration None
end_date None
is_premature False
job_id None
operator None
pid None
queued_dttm None
raw False
run_as_user None
start_date None
state None
更新
我终于可以开始做某事了...
在我的噩梦,马拉松比赛,陷入困境的故障排除会话之后,我举起手来,决定使用docker容器而不是本机运行。太奇怪了。事情只是没有道理。我需要搬到docker,以便可以完全控制和复制环境。
所以我开始基于puckel / docker-airflow进行docker设置。这也不是一件容易的事,因为我决定对所有参数和连接使用环境变量。并非所有的钩子都以相同的方式解析连接URI,因此您必须小心并查看代码并进行一些尝试和错误。
所以我做到了,终于让我的docker安装程序在本地工作。但是,当我在EC2实例上构建映像时,发现磁盘已满。而且由于气流日志的原因,它已经充满了。
因此,我的新理论是磁盘空间不足可能与此有关。我不确定能否在原木上找到抽烟的枪,但我会看。
答案 0 :(得分:3)
好吧,我将其关闭并标记出服务器空间不足时的根本原因。
有很多促成因素:
INFO
日志消息每秒钟或每两秒输出一次Harvesting DAG parsing results
,最终导致日志文件很大。 解决方案::此问题已在1.10.3版的提交[AIRFLOW-3911] Change Harvesting DAG parsing results to DEBUG log level (#4729)
中修复,但是如果您坚持使用1.10.2,则始终可以进行分叉和选择。 airflow.cfg
所致。 解决方案:升级(或更改版本)时,请暂时移动airflow.cfg
,以便生成与该版本兼容的cfg,然后仔细合并它们。另一种策略是仅 依赖环境变量,因此您的配置应始终总是 进行全新安装,而env变量中唯一的参数是参数覆盖,并且可能连接。