【问题标题】:How memory is allocated for a task in Apache Airflow and how to increase it如何为 Apache Airflow 中的任务分配内存以及如何增加内存
【发布时间】:2019-04-26 09:54:54
【问题描述】:

Apache 气流平台中有一个任务,它使用 SQL 通过 pandas 数据框提取数据。数据大小超过600k。下面是代码:

def stage1_data_extract(**kwargs):
    sql="some sql logic"
    df1 = pd.read_sql(sql, conn)

    df1 = df1.loc[:, ~df1.columns.duplicated()]

    return df1 

我观察到,当 Apache 气流任务在任务中返回上述数据帧时,Apache 气流挂起,我需要手动终止所有进程以使服务器重新启动并运行。

看起来气流任务的资源/内存不足,无法返回 600k 容量的数据帧。

我有几个问题:

  1. airflow如何为每个任务分配内存容量/资源,是airflow运行所在服务器的RAM容量吗?

  2. 有没有办法通过增加服务器的 RAM 容量来增加特定任务的内存容量,或者如何做到这一点?

建议是否有办法在气流中处理这种内存密集型任务或任何更好的方法来处理这种情况。

还让我知道一个任务是如何在气流中获得其内存分配的。

【问题讨论】:

    标签: python-3.x pandas airflow


    【解决方案1】:

    airflow 的主要目的是调度 ETL 任务,而不是直接运行任务。但是在这里,您通过加载太多数据来压倒气流服务器。这些是可能的解决方案:

    1. 如果您使用 docker 在本地机器上运行,您可以 根据您的系统手动增加容器内存。

    2. 在集群模式下设置气流,其中服务器、调度程序、 假设您拥有所需的资源,并且工作人员在不同的机器上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2014-11-12
      • 2012-11-28
      • 2021-01-30
      相关资源
      最近更新 更多