我对 Airflow 很陌生,并试图了解我们应该如何在我们的环境中设置它(在 aws 上)。
我读过 Airflow 使用 Celery 和 redis 代理。它与 Mesos 有何不同?我以前没有使用过 Celery,但我尝试在我的开发机器上设置 celery-redis,它很容易工作。但是添加新组件意味着添加更多监控。
由于我们已经使用 mesos 进行集群管理,所以我想如果我不选择 celery 而使用 MesosExecutor 会错过什么?
使用 Celery 是目前更成熟/稳定的方法。
对我们来说,使用容器管理依赖比管理 Mesos 实例上的依赖更方便,如果选择 MesosExecutor 就是这种情况。因此,我们发现 Celery 更加灵活。
我们目前正在使用 Celery + RabbitMQ,但我们将在未来切换到 MesosExecutor,因为我们的代码库会稳定下来。
带有 CeleryExecuter 的气流不一定需要使用 Redis Broker。celery 可以使用的任何代理都与气流兼容,但建议使用 RabbitMQ 代理或 Redis 代理。
Celery 与 Mesos 完全不同。虽然气流也支持 MesosExecutor,但如果您计划分配工作人员,建议使用 CeleryExecutor。据我所知,Airbnb 使用 CeleryExecutor 并积极维护它。
对我们来说,不能使用 MesosExecutor。我们需要一个抽象级别来处理作业的依赖关系,我们不能(也不应该)依赖安装在 mesos slave 上的任何依赖项。当 MesosExecutor 支持 Docker 容器和/或 Mesos 容器时,我们可以求助于它。此外,我喜欢在 Marathon 中看到分配的工人。我正在研究如何使用 Marathon 自动缩放工人。
MesosExecutor 在这个阶段仍处于试验阶段,不支持运行 Docker 容器,每个任务有不同的资源限制,可能还有许多其他限制。
不过我计划在这方面工作,这是社区的努力,并且已经花费了一些精力来部署 Mesos 集群,我觉得添加 Celery 和另一个 MQ 代理是一种资源浪费。