首页 > 解决方案 > Airflow Celery 执行器开始失败的任务

问题描述

我需要帮助来解决有关 Celery 执行器失败的问题。在我的架构下方:

这是从 Flower 中截取的屏幕截图:

在此处输入图像描述

集群运行良好,但显然没有任何理由安排在 Celery 工作人员上的所有任务开始失败:从 Flower 我看到它们立即失败,实际上我没有任何来自 Airflow 的日志可用于这些任务。(现在 Celery 工作人员已被手动删除,但 IP为 10.228.142.52的工人)。

由于相同的原因,所有任务都失败了:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/celery_executor.py", line 67, in execute_command
    close_fds=True, env=env)
  File "/usr/local/lib/python3.7/subprocess.py", line 363, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['airflow', 'run', 'ingestion_tracker-all', 'ingestion_tracker', '2021-08-02T06:00:00+00:00', '--local', '--pool', 'batch_pool', '-sd', '/usr/local/airflow/dags/tracker-ingestion/tracker-all/tracker-all.py']' returned non-zero exit status 1.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/celery/app/trace.py", line 385, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/celery/app/trace.py", line 650, in __protected_call__
    return self.run(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/celery_executor.py", line 72, in execute_command
    raise AirflowException('Celery command failed')
airflow.exceptions.AirflowException: Celery command failed

我认为问题与Airflow Workers 配置和为它们选择的实例类型有关。我将配置更改如下:

之前:20 个工人(t3.small)和 4 个 worker_concurrency

After : 4 个 worker (t3.2xlarge)和 8 个 worker_concurrency 使得从 Celery worker 获得的并行度与 Airflow (32) 中配置的全局并行度相匹配,但一段时间后问题出现了。

我检查了实例和 docker 本身,但在可用内存和 CPU 方面似乎还可以,所以我真的不知道这些失败的原因是什么。除了上面发布的堆栈跟踪之外,Dockers 日志没有给我任何其他详细信息。

任何提示将不胜感激,谢谢。

标签: dockercelerycelery-taskairflow

解决方案


推荐阅读