gpt4 book ai didi

airflow - 如何设置 2 个服务器的 Airflow ?

转载 作者:行者123 更新时间:2023-12-04 11:43:16 26 4
gpt4 key购买 nike

试图将 Airflow 进程拆分到 2 个服务器上。服务器 A 已经在独立模式下运行,上面有所有东西,有 DAG,我想将它设置为新设置中的工作人员,并带有额外的服务器。

服务器 B 是将在 MySQL 上托管元数据数据库的新服务器。

我可以让服务器 A 运行 LocalExecutor,还是必须使用 CeleryExecutor?会 airflow scheduler必须在具有 DAG 的服务器上运行,对吗?还是必须在集群中的每台服务器上运行?对进程之间的依赖关系感到困惑

最佳答案

This article在演示如何将 Airflow 集群到多台服务器上做得非常出色。

多节点(集群) Airflow 设置

Apache Airflow 的一种更正式的设置是将守护进程作为集群分布在多台机器上。

enter image description here

福利

更高的可用性

如果其中一个工作节点宕机或被故意脱机,集群仍可运行,任务仍将执行。

分布式处理

如果您有一个包含多个内存密集型任务的工作流,那么这些任务将得到更好的分配,以允许在整个集群中更高地利用数据并提供更快的任务执行速度。

扩容 worker

水平

您可以水平扩展集群并通过向集群添加更多执行器节点并允许这些新节点减轻现有节点的负载来分配处理。由于工作人员不需要向任何中央机构注册即可开始处理任务,因此可以打开和关闭机器,而不会导致集群停机。

垂直

您可以通过增加每个节点上运行的 celeryd 守护进程的数量来垂直扩展集群。这可以通过增加 {AIRFLOW_HOME}/airflow.cfg 文件中“celeryd_concurrency”配置中的值来完成。

示例:

celeryd_concurrency = 30

您可能需要增加实例的大小以支持更多的 celeryd 进程。这将取决于您在集群上运行的任务的内存和 CPU 强度。

扩展主节点

您还可以向集群添加更多主节点,以扩展在主节点上运行的服务。这将主要允许您扩展 Web 服务器守护程序,以防一台机器处理的 HTTP 请求过多,或者您想为该服务提供更高的可用性。

需要注意的一件事是一次只能运行一个 Scheduler 实例。如果您有多个调度程序在运行,则可能会调度单个任务的多个实例。如果您正在运行某种 ETL 过程,这可能会导致您的工作流出现一些重大问题,并导致最终表中出现重复数据。

如果您愿意,还可以将调度程序守护程序设置为在其自己的专用主节点上运行。

enter image description here

Apache Airflow 集群设置步骤

先决条件
  • 以下节点可用于给定的主机名:
  • master1 - 将具有以下角色:Web 服务器、调度程序
  • master2 - 将具有以下角色:Web 服务器
  • worker1 - 将具有以下角色:Worker
  • worker2 - 将具有以下角色:Worker
  • 排队服务正在运行。 (RabbitMQ、AWS SQS 等)
  • 您可以按照以下说明安装 RabbitMQ:安装 RabbitMQ
  • 如果您使用 RabbitMQ,建议也将其设置为高可用性集群。设置负载均衡器来代理对 RabbitMQ 实例的请求。

  • enter image description here

    enter image description here

    附加文档
  • 文档:https://airflow.incubator.apache.org/
  • 安装文档:https://airflow.incubator.apache.org/installation.html
  • GitHub 存储库:https://github.com/apache/incubator-airflow
  • 关于airflow - 如何设置 2 个服务器的 Airflow ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45045507/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com