【问题标题】:Airflow DAG fails when PythonOperator with error "Negsignal.SIGKILL"当 PythonOperator 出现错误“Negsignal.SIGKILL”时,气流 DAG 失败
【发布时间】:2021-11-12 19:49:33
【问题描述】:

我在 Cloud Composer v1.16.16 上运行 Airflowv1.10.15。

我的 DAG 如下所示:

from datetime import datetime, timedelta

# imports
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.operators.dummy_operator import DummyOperator
from scripts import workday_extract, workday_config_large

default_args = {
    'owner': 'xxxx',
    'depends_on_past': False,
    'start_date': datetime(2021, 9, 14),
    'email_on_failure': True,
    'email': ['xxxx'],
    'retries': 1,
    'retry_delay': timedelta(minutes=2),
    'catchup': False
}


# Define the DAG with parameters
dag = DAG(
    dag_id='xxxx_v1',
    schedule_interval='0 20 * * *',
    default_args=default_args,
    catchup=False,
    max_active_runs=1,
    concurrency=1
)

def wd_to_bq(key, val, **kwargs):
    logger.info("workday to BQ ingestion")
    workday_extract.fetch_wd_load_bq(key, val)


start_load = DummyOperator(task_id='start', dag=dag)

end_load = DummyOperator(task_id='end', dag=dag)

for key, val in workday_config_large.endpoint_tbl_mapping.items():
    # Task 1: Process the unmatched records from the view
    workday_to_bq = PythonOperator(
        dag=dag,
        task_id=f'{key}',
        execution_timeout=timedelta(minutes=60),
        provide_context=True,
        python_callable=wd_to_bq,
        op_kwargs={'key': key, 'val': val}
    )
    start_load >> workday_to_bq >> end_load

任务失败并出现错误 - Task exited with return code Negsignal.SIGKILL。 python 脚本在我的本地机器上运行良好,并在 15 分钟内完成。有多个从中提取报告的端点。但是,耗时最长(约 15 分钟)的那个会因此错误而失败,而其他的会成功。

我尝试了很多选项,但似乎都没有。有人可以帮忙吗?

【问题讨论】:

  • Cloud Composer 为您提供了一个监控仪表板。我建议只运行失​​败的任务,并在此期间检查 Airflow 工作人员的内存和 CPU 压力。这会告诉你需要增加哪些资源。
  • 如果我的回答解决了您的问题,请考虑接受并点赞。如果没有,请告诉我,以便我改进答案。

标签: python-3.x google-cloud-platform airflow google-cloud-composer sigkill


【解决方案1】:

我通过增加内存大小解决了这个问题

https://github.com/apache/airflow/issues/10435

在运行任务时应该检查作为 worker 的 pod 的内存大小

【讨论】:

  • 仅链接的答案是无用的。你能详细说明一下吗?
  • 要下载的数据文件大约100 MB。我正在使用一个由 3 个节点组成的集群,每个节点都有 n1-standard-1,即 3.75 G RAM 。是不是不够?我应该将它增加到 7.5 G 吗?
  • 你按照 Greg@ 的建议做了吗?此错误与资源有关,因此您只需增加资源即可。但是,这是 Airflow 中的一个已知问题,他们会在有解决方案时发布官方解决方案。
【解决方案2】:

当分配的资源少于所需资源时会发生此错误。 DAG 执行受 RAM 限制。根据 DAG 的性质,可以消耗更多内存。因此,始终优选使用具有更高内存的机器类型。由于您使用的是 Cloud Composer 1,因此无法自动缩放资源。最好增加你的资源。

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多