尝试将Airflow流程拆分为2台服务器。服务器A已经在独立模式下运行,其中包含所有内容,它有DAG,我想在新设置中将其设置为具有附加服务器的worker。
服务器B是将在MySQL上托管元数据数据库的新服务器。
我可以让服务器A运行LocalExecutor,还是必须使用CeleryExecutor? airflow scheduler
是否必须在DAG正确的服务器上运行?或者它是否必须在群集中的每个服务器上运行?对进程之间存在哪些依赖关系感到困惑
答案 0 :(得分:0)
所有气流流程都需要在airflow_home
文件夹中包含相同的内容。这包括配置和dags。如果您只希望服务器B运行MySQL数据库,则无需担心任何气流细节。只需在服务器B上安装数据库,然后将airflow.cfg的sql_alchemy_conn
参数更改为指向服务器B上的数据库,并从服务器A运行气流initdb。
如果您还想在服务器B上运行气流处理,则必须使用CeleryExecutor查看缩放。
答案 1 :(得分:0)
This article很好地展示了如何将Airflow群集到多台服务器上。
多节点(群集)气流设置
Apache Airflow的一种更正式的设置是将守护程序作为群集分布在多台计算机上。
好处
更高的可用性
如果其中一个工作节点发生故障或被有意地脱机,则群集仍将处于运行状态,并且仍将执行任务。
分布式处理
如果您的工作流包含多个内存密集型任务,那么这些任务将得到更好的分配,从而可以在整个群集中实现更高的数据利用率,并更快地执行任务。
规模化员工
水平
您可以通过向集群添加更多执行程序节点,并允许这些新节点减轻现有节点的负担,来水平扩展集群并分配处理。由于工作人员无需向任何中央机构注册即可开始处理任务,因此可以在不中断群集的情况下打开和关闭计算机。
垂直
您可以通过增加每个节点上运行的celeryd守护程序的数量来垂直扩展集群。这可以通过增加{AIRFLOW_HOME} /airflow.cfg文件中“ celeryd_concurrency”配置中的值来完成。
示例:
celeryd_concurrency = 30
您可能需要增加实例的大小,以支持更多的celeryd进程。这将取决于您在群集上运行的任务的内存和CPU强度。
扩展主节点
您还可以将更多的主节点添加到群集中,以扩展在主节点上运行的服务。这主要是允许您扩展Web服务器守护程序,以防一台机器需要处理太多HTTP请求,或者如果您想为该服务提供更高的可用性。
要注意的一件事是一次只能运行一个Scheduler实例。如果有多个调度程序在运行,则可能会调度单个任务的多个实例。如果您正在运行某种ETL流程,这可能会导致工作流程出现一些重大问题,并导致重复数据显示在最终表中。
如果愿意,还可以将Scheduler守护程序设置为在其自己的专用主节点上运行。
Apache Airflow群集设置步骤
必备条件
其他文档