Skip to content

使用 Celery 扩大规模

贡献者:@ImPerat0R_@ThinkingChen

CeleryExecutor是您扩展 worker 数量的方法之一。为此,您需要设置 Celery 后端(RabbitMQRedis,...)并更改airflow.cfg以将执行程序参数指向CeleryExecutor并提供相关的 Celery 设置。

有关设置 Celery broker 的更多信息,请参阅有关该主题的详细的 Celery 文档

以下是您的 workers 的一些必要要求:

  • 需要安装airflow,CLI 需要在路径中
  • 整个集群中的 Airflow 配置设置应该是同构的
  • 在 worker 上执行的 Operators(执行器)需要在该上下文中满足其依赖项。例如,如果您使用HiveOperator,则需要在该框上安装 hive CLI,或者如果您使用MySqlOperator,则必须以某种方式在PYTHONPATH提供所需的 Python 库
  • workers 需要访问其DAGS_FOLDER的权限,您需要通过自己的方式同步文件系统。常见的设置是将 DAGS_FOLDER 存储在 Git 存储库中,并使用 Chef,Puppet,Ansible 或用于配置环境中的计算机的任何内容在计算机之间进行同步。如果您的所有盒子都有一个共同的挂载点,那么共享您的管道文件也应该可以正常工作

要启动 worker,您需要设置 Airflow 并启动 worker 子命令

airflow worker

您的 worker 一旦启动就应该开始接收任务。

请注意,您还可以运行“Celery Flower”,这是一个建立在 Celery 之上的 Web UI,用于监控您的 worker。 您可以使用快捷命令airflow flower启动 Flower Web 服务器。

一些警告:

  • 确保使用数据库来作为 result backend(Celery result_backend,celery 的后台存储数据库)的后台存储
  • 确保在[celery_broker_transport_options]中设置超过最长运行任务的 ETA 的可见性超时
  • 任务会消耗资源,请确保您的 worker 有足够的资源来运行 worker_concurrency 任务


回到顶部