根据这两种Link1和Link2的说法,由于内存不足问题,我的气流DAG运行正在返回错误INFO - Task exited with return code -9。我的DAG运行有10个任务/操作符,每个任务简单地:
10个BigQuery表的大小介于1MB到400 1MB之间,所有10个表的总大小为1GB。我的停靠容器有默认的2GB内存,我已经将这个内存增加到了4GB,但是我仍然收到来自几个任务的这个错误。我对此感到困惑,因为4GB应该是足够的内存。我也很担心,因为在将来,这些表可能会变得更大(单个表查询可能是1-2GB),我想在那时避免这些return code -9错误。
我不太清楚如何处理这个问题,因为DAG的重点是每天将数据从BigQuery传输到Mongo,并且根据表的大小,用于DAG任务的查询/数据必须相当大。
发布于 2020-05-13 15:42:08
正如您所说,您得到的错误消息对应于内存不足问题。
提到正式文件
DAG执行是RAM有限的。每个任务执行从两个气流过程开始:任务执行和监视。目前,每个节点最多可以承担6个并发任务。根据DAG的大小,可以消耗更多的内存。
任何GKE节点中的高内存压力都将导致Kubernetes调度程序从节点中清除荚,以缓解这种压力。虽然GKE中运行着许多不同的气流组件,但大多数不倾向于使用大量内存,因此最常见的情况是用户上传了一个资源密集型的DAG。气流工作人员运行这些DAG,耗尽资源,然后被逐出。
您可以通过以下步骤来检查它:
Kubernetes Engine -> Workloadsairflow-worker,然后在Managed pods下面查看Evicted的豆荚,请单击每个被逐出的吊舱,并在窗口顶部查找The node was low on resource: memory消息。解决OOM问题的可能方法是什么?
-9'ed时,它将转到up_for_retry而不是failed。此外,还可以检查CPU的行为:
Kubernetes Engine -> ClustersNode Pools,然后展开default-pool部分Instance groups下面列出的链接Monitoring选项卡,在那里可以找到CPU utilization理想情况下,GCE实例不应该在任何时候都运行超过70%的CPU,或者在资源使用期间Composer环境可能变得不稳定。
我希望你能找到这些有用的信息。
发布于 2020-05-14 01:44:07
我将对数据进行分块,以便在任何给定时间将较少的数据加载到任何1任务中。我还不确定是否需要使用GCS/S3作为中间存储。
https://stackoverflow.com/questions/61768087
复制相似问题