我已经使用Airflow一段时间了,它是由一位同事设置的。最近我遇到了几个错误,这需要我更多地知道如何修复 Airflow 中的某些问题。
我确实了解这 3 个进程是什么,我只是不了解运行它们时发生的基本事情。当我运行其中一个命令时,究竟会发生什么?事后我可以在某个地方看到它们正在运行吗?如果我运行这些命令之一,这会覆盖旧的网络服务器/调度程序/工作线程还是添加新的?
此外,如果我例如运行airflow webserver
,屏幕将显示正在发生的一些事情。我可以通过按 CTRL + C 简单地摆脱这种情况吗?因为当我这样做时,它会说Worker exiting
和Shutting down: Master
之类的话。这是否意味着我要关闭所有内容?那么我还应该如何退出网络服务器屏幕呢?
每个进程在运行时都会执行它们构建要做的事情(Web 服务器提供 UI,调度程序确定何时需要运行,而 worker 实际运行任务(。
我认为您的困惑在于,您可能将它们视为指示某种"气流服务"执行某些操作的命令,但它们都是启动进程以执行操作的每个独立命令。从零开始,你运行airflow scheduler
:现在你有一个调度程序正在运行。 运行airflow webserver
:现在您有一个正在运行的网络服务器。当你运行airflow webserver
时,它正在启动一个python烧瓶应用程序。 当该进程运行时,Web 服务器正在运行,如果您杀死命令,则会关闭。
所有三个都必须运行才能使气流作为一个整体工作(假设您使用的是需要工作线程的执行器(。您应该只运行一个调度程序,但是如果您要运行两个airflow webserver
进程(忽略端口冲突(,那么您将使用相同的元数据数据库运行两个单独的 http 服务器。工作线程略有不同,因为您可能希望运行多个工作进程,以便可以同时执行更多任务。因此,如果您创建多个airflow worker
进程,您最终将得到多个进程从队列中获取作业,执行它们,并使用任务的状态更新任务实例。
当您运行这些命令中的任何一个时,您将在控制台中看到标准输出和标准输出。如果将它们作为守护程序或后台进程运行,则可以检查服务器上正在运行的进程。
如果按 ctrl+c,则正在发送终止进程的信号。理想情况下,对于生产气流集群,您应该让一些主管监控流程并确保它们始终运行。在本地,您可以在单独 shell 的前台运行命令,最小化它们并在需要时保持它们运行。或者将它们作为带有-D
参数的后台守护进程运行。即airflow webserver -D
.