【问题标题】:Can one airflow task run on multiple workers in Cloud Composer?一个气流任务可以在 Cloud Composer 中的多个工作人员上运行吗?
【发布时间】:2020-12-30 07:32:10
【问题描述】:

我在气流 dag 中有一个任务,需要 100 GB 的 RAM 才能成功完成。我在 Composer 环境中有 3 个节点,每个节点都有 50 GB 内存。我有 3 名工人(每个节点上运行一名)。这里的问题是,此任务仅在其中一个工作人员上运行(它可以使用的最大内存为 50 GB),因此由于内存问题而失败。

有没有办法让这个任务使用所有节点的内存(150 GB)? (假设我们不能将任务分成更小的步骤)

另外,在 Cloud Composer 中,我们可以让工作人员跨越多个节点吗? (如果是这样,我可以强制一个工作人员在所有三个节点上运行并使用 150 GB 内存)

【问题讨论】:

  • “让一个worker跨越多个节点”,你说的是分布式计算,这并不像你写的那么简单。这就是创建 Hadoop 和 Spark 等框架的原因。也许您可以改为在 Dataflow 中编写工作,因为这会将您的任务扩展到多个工作人员,并使用 Dataflow 运算符。
  • 和其他提到的一样,如果你想暴力破解它,你可以使用 Airflow 在 GCE 中用足够的内存启动单个实例,执行任务,然后关闭实例

标签: google-cloud-platform google-cloud-composer airflow


【解决方案1】:

如果单个 DAG 的资源密集型足以耗尽整个 Composer 节点的资源,那么除非共同调度的工作人员成为问题,否则更多节点将无济于事。所以可能的解决方案是创建一个新的 Cloud Composer 环境,其机器类型比当前机器类型更大,请参考public documentation

任何 GKE 节点中的高内存压力都会导致 Kubernetes 调度程序从节点中驱逐 pod,以试图缓解这种压力。尽管 GKE 中运行着许多不同的 Airflow 组件,但大多数都不会使用太多内存,因此最常发生的情况是用户上传了资源密集型 DAG。 Airflow 工作人员运行这些 DAG,用完资源,然后被驱逐。

您可以通过以下步骤进行检查:

  1. 在 Cloud Console 中,导航至 Kubernetes Engine -> Workloads
  2. 点击airflow-worker,在Managed pods下方查看
  3. 如果有显示 Evicted 的 pod,请单击每个被驱逐的 pod 并在窗口顶部查找 The node was low on resource: memory 消息。

【讨论】:

    【解决方案2】:

    如果小于 128 GB,那么您可以启动一个计算引擎,使用各种运算符来解决您的问题https://airflow.apache.org/docs/stable/howto/operator/gcp/compute.html

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2019-05-20
      • 2013-03-01
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多