Airflow:`airflow webserver`、`airflow scheduler` 和 `airflow worker` 究竟是做什么的?

Airflow: what do `airflow webserver`, `airflow scheduler` and `airflow worker` exactly do?

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

我确实理解这 3 个过程是什么,我只是不理解当我 运行 它们时发生的潜在事情。当我 运行 其中一个命令时到底发生了什么?事后我可以在某个地方看到他们 运行ning 吗?如果我 运行 这些命令之一,这会覆​​盖旧的 webservers/schedulers/workers 还是添加新的?

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

每个进程在 运行ning 时执行它们被构建的任务(网络服务器提供 UI,调度程序确定什么时候需要 运行,而工作人员实际上 运行任务)。

我认为您感到困惑的是,您可能将它们视为告诉某种 "Airflow service" 做某事的命令,但它们都是启动进程做某事的独立命令。 IE。从无到有,你 运行 airflow scheduler:现在你有了一个调度程序 运行ning。 运行 airflow webserver: 现在你有一个网络服务器 运行ning。当您 运行 airflow webserver 时,它正在启动一个 python flask 应用程序。虽然该进程是 运行ning,但网络服务器是 运行ning,如果你 kill 命令,它会关闭。

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

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

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