气流似乎正在失去对任务的跟踪,并认为它们失败了

问题描述

我正在使用cloud composer composer-1.10.6-airflow-1.10.6

气流启动任务似乎似乎有问题,并且无法跟踪它们。日志停止,最终将其标记为失败,但实际上该任务成功完成。如果配置了重试,那么对于非幂等任务(例如,添加数据的任务),这是一个大问题。每当发生这种情况时,我都必须去手动调查任务是否确实完成,并相应地标记作业。

这是一个示例日志。这是此问题的典型日志。里面没有太多有用的信息,基本上它们看起来像是过早地结束了(因此感觉就像气流一样失去了工作的轨道)。同时,该工作仍成功完成。

*** Reading remote log from gs://bucket/log/path/log.log
[2020-08-31 12:16:33,450] {taskinstance.py:630} INFO - Dependencies all met for <TaskInstance: builder.launch_loader_prd 2020-08-30T10:30:00+00:00 [queued]>
[2020-08-31 12:16:33,569] {taskinstance.py:630} INFO - Dependencies all met for <TaskInstance: builder.launch_loader_prd 2020-08-30T10:30:00+00:00 [queued]>
[2020-08-31 12:16:33,571] {taskinstance.py:841} INFO -
--------------------------------------------------------------------------------
[2020-08-31 12:16:33,572] {taskinstance.py:842} INFO - Starting attempt 1 of 1
[2020-08-31 12:16:33,572] {taskinstance.py:843} INFO -
--------------------------------------------------------------------------------
[2020-08-31 12:16:33,605] {taskinstance.py:862} INFO - Executing <Task(DataflowTemplateOperator): launch_loader_prd> on 2020-08-30T10:30:00+00:00
[2020-08-31 12:16:33,608] {base_task_runner.py:133} INFO - Running: ['airflow','run','builder','launch_loader_prd','2020-08-30T10:30:00+00:00','--job_id','449104','--pool','default_pool','--raw','-sd','DAGS_FOLDER/mydag.py','--cfg_path','/tmp/tmpmzlheavp']

感谢您的帮助。谢谢。

解决方法

您共享的日志似乎是任务开始的预期日志。如果任务失败,并且在一段时间后被标记为失败,我将检查是否存在类似于以下内容的日志:

Executor reports task instance <TaskInstance: YOUR_TASK 2020-08-31 10:30:00+00:00 [queued]> finished (failed) although the task says its queued. Was the task killed externally?

在Stackdriver中检查此类日志,以获取有关为什么将任务标记为失败的更多信息。

现在,关于问题本身,我可以看到您正在执行DataflowTemplateOperator,可能发生的情况是,由于某些问题,该任务无法从Dataflow中获取状态(请参见example)失败,或者该任务最终因等待作业完成而超时,并被标记为失败(如果是这种情况,您将在日志中看到“超时”消息)。增加任务执行的超时时间。

在这两种情况下,我的建议都是直接在Stackdriver中查找日志,以获取有关任务的更多信息。

如果问题不仅与DataflowTemplateOperator有关,而且与任何任务有关,那么我将检查群集的整体状态,以查看是否有因迁出荚果或类似问题而出现任何错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...