首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >气流内存错误:返回代码-9退出的任务

气流内存错误:返回代码-9退出的任务
EN

Stack Overflow用户
提问于 2020-05-13 06:50:01
回答 2查看 2.2K关注 0票数 2

根据这两种Link1Link2的说法,由于内存不足问题,我的气流DAG运行正在返回错误INFO - Task exited with return code -9。我的DAG运行有10个任务/操作符,每个任务简单地:

  1. 进行查询以获取我的一个BigQuery表,并且
  2. 将结果写入我的Mongo数据库中的集合。

10个BigQuery表的大小介于1MB到400 1MB之间,所有10个表的总大小为1GB。我的停靠容器有默认的2GB内存,我已经将这个内存增加到了4GB,但是我仍然收到来自几个任务的这个错误。我对此感到困惑,因为4GB应该是足够的内存。我也很担心,因为在将来,这些表可能会变得更大(单个表查询可能是1-2GB),我想在那时避免这些return code -9错误。

我不太清楚如何处理这个问题,因为DAG的重点是每天将数据从BigQuery传输到Mongo,并且根据表的大小,用于DAG任务的查询/数据必须相当大。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-13 15:42:08

正如您所说,您得到的错误消息对应于内存不足问题。

提到正式文件

DAG执行是RAM有限的。每个任务执行从两个气流过程开始:任务执行和监视。目前,每个节点最多可以承担6个并发任务。根据DAG的大小,可以消耗更多的内存。

任何GKE节点中的高内存压力都将导致Kubernetes调度程序从节点中清除荚,以缓解这种压力。虽然GKE中运行着许多不同的气流组件,但大多数不倾向于使用大量内存,因此最常见的情况是用户上传了一个资源密集型的DAG。气流工作人员运行这些DAG,耗尽资源,然后被逐出。

您可以通过以下步骤来检查它:

  1. 在云控制台中,导航到Kubernetes Engine -> Workloads
  2. 单击airflow-worker,然后在Managed pods下面查看
  3. 如果有显示Evicted的豆荚,请单击每个被逐出的吊舱,并在窗口顶部查找The node was low on resource: memory消息。

解决OOM问题的可能方法是什么?

  • 使用比当前计算机类型更大的计算机类型创建一个新的Composer环境。
  • 确保DAG中的任务是幂等,这意味着同一DAG多次运行的结果应该与运行一次的结果相同。
  • 通过设置任务上的重试次数来配置任务重试 -这样,当任务通过调度程序获得-9'ed时,它将转到up_for_retry而不是failed

此外,还可以检查CPU的行为:

  1. 在云控制台中,导航到Kubernetes Engine -> Clusters
  2. 在页面底部找到Node Pools,然后展开default-pool部分
  3. 单击Instance groups下面列出的链接
  4. 切换到Monitoring选项卡,在那里可以找到CPU utilization

理想情况下,GCE实例不应该在任何时候都运行超过70%的CPU,或者在资源使用期间Composer环境可能变得不稳定。

我希望你能找到这些有用的信息。

票数 2
EN

Stack Overflow用户

发布于 2020-05-14 01:44:07

我将对数据进行分块,以便在任何给定时间将较少的数据加载到任何1任务中。我还不确定是否需要使用GCS/S3作为中间存储。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61768087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档