使用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子命令

  1. 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任务