Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 到底是做啥的?

Posted

技术标签:

【中文标题】Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 到底是做啥的?【英文标题】:Airflow: what do `airflow webserver`, `airflow scheduler` and `airflow worker` exactly do?Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 到底是做什么的? 【发布时间】:2018-12-06 08:54:38 【问题描述】:

我使用 Airflow 已经有一段时间了,它是由一位同事设置的。最近我遇到了几个错误,这需要我更深入地了解如何修复 Airflow 中的某些问题。

我确实了解这 3 个进程是什么,但我只是不了解运行它们时发生的基本情况。当我运行其中一个命令时究竟会发生什么?之后我可以在某个地方看到他们正在运行吗?如果我运行这些命令之一,这会覆​​盖旧的 webservers/scheduler/workers 还是添加一个新的?

此外,例如,如果我运行airflow webserver,屏幕会显示一些正在发生的事情。我可以通过按 CTRL + C 来摆脱这种情况吗?因为当我这样做时,它会显示Worker exitingShutting down: Master 之类的内容。这是否意味着我要关闭一切?那我还应该怎么离开网络服务器屏幕呢?

【问题讨论】:

【参考方案1】:

每个进程在运行时执行其构建的任务(网络服务器提供 UI,调度程序确定何时需要运行,工作人员实际运行任务)。

我认为您的困惑是,您可能将它们视为命令某种“气流服务”执行某些操作的命令,但它们都是启动进程执行某些操作的独立命令。 IE。从无到有,你运行airflow scheduler:现在你有一个调度程序正在运行。运行airflow webserver:现在你有一个网络服务器正在运行。当您运行 airflow webserver 时,它正在启动一个 python 烧瓶应用程序。当该进程正在运行时,网络服务器正在运行,如果您使用 kill 命令,则会关闭。

所有三个都必须运行才能使气流作为一个整体工作(假设您使用的是需要工人的执行器)。您应该只运行一个调度程序,但是如果您要运行 airflow webserver 的两个进程(忽略端口冲突,那么您将使用相同的元数据数据库运行两个单独的 http 服务器。worker 有点不同,因为您可能希望多个工作进程运行,以便您可以同时执行更多任务。因此,如果您创建多个airflow worker 进程,您最终将有多个进程从队列中获取作业,执行它们,并使用状态更新任务实例任务。

当您运行任何这些命令时,您将在控制台中看到 stdout 和 stderr 输出。如果您将它们作为守护进程或后台进程运行,您可以检查服务器上正在运行哪些进程。

如果你 ctrl+c 你正在发送一个信号来终止进程。理想情况下,对于生产气流集群,您应该让一些主管监控流程并确保它们始终运行。在本地,您可以在单独的 shell 的前台运行命令,最小化它们并在需要时保持它们运行。或者使用 -D 参数将它们作为后台守护进程运行。即airflow webserver -D

【讨论】:

感谢您的回复,这让一些事情变得更清楚了。我确实了解到我可以将进程作为守护进程运行!说 webserver 和 scheduler 命令覆盖旧的 webserver 和 scheduler 是否正确,而 worker 只是添加一个?例如,如果 UI 不再工作,我可以简单地运行 airflow webserver 并重新启动吗?我在看ps -ajx,看到很多芹菜工人 (16).. 不确定这是否可以? 谢谢。与此相关的另一个问题是:如何查看正在运行的调度程序进程,以便我可以杀死它们?我认为在这种情况下我可能会开始多次.. 那个有点难。调度程序将分拆看起来相似的子进程。我建议将它们配置为作为服务运行,这样您就可以启动/停止服务,并允许它确保在应该启动服务时它保持运行。让它在前台运行,这样你就可以看到它是否在运行。或者通过 Docker 运行它。 有没有办法完全停止气流(所以全部停止)并再次运行 3 个命令?我打算用 Docker 运行它,但必须先切换旧的 @y2k-shubham 您可以毫无问题地运行多个网络服务器。至于工人,我不得不猜测你正在使用本地执行器,它在调度程序上运行任务,所以不需要工人

以上是关于Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 到底是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章

AirFlow 管理界面使用

airflow 优化

原创大数据基础之Airflow生产环境部署airflow研究

Apache Airflow - 添加 Google 身份验证

3.Airflow使用

Airflow架构与扩容