如何在 Windows 上运行 Airflow

Posted

技术标签:

【中文标题】如何在 Windows 上运行 Airflow【英文标题】:How to run Airflow on Windows 【发布时间】:2015-11-29 10:58:47 【问题描述】:

运行 Airflow 的常规说明不适用于 Windows 环境:

# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow

# install from pypi using pip
pip install airflow

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

Airflow 实用程序在命令行中不可用,我无法在其他地方找到它来手动添加。 Airflow 如何在 Windows 上运行?

【问题讨论】:

【参考方案1】:

三个基本选项

我对这个问题进行了几次迭代,并在进行过程中记录了它们。我尝试过的三件事是:

    Install Airflow directly into Windows 10 - 此尝试失败。 Install Airflow into Windows 10 WSL with Ubuntu - 效果很好。请注意,WSL 是适用于 Linux 的 Windows 子系统,您可以在 Windows 商店免费获得。 Install Airflow into Windows 10 via Docker + Centos - 这也很有效。

请注意,如果您想让它作为 Linux 服务运行,则选项 2 是不可能的。选项 3 是可能的,但我没有这样做,因为它需要在 docker 中激活特权容器(我不知道我什么时候开始的)。此外,在 Docker 中运行服务有点违反范式,因为无论如何每个容器都应该是一个单一的进程/责任单元。

#2 - WSL 选项的详细说明

如果您选择选项 2,则基本步骤如下:

安装并打开 WSL Ubuntu。 验证它是否带有 python 3.6.5 左右 (python3 -version)。 假设它仍然存在,添加这些包以便安装 PIP 可以正常工作。 sudo apt-get install software-properties-common sudo apt-add-repository universe sudo apt-get update 安装 pip: sudo apt-get install python-pip(对于 Python 3 或 python3-pip) 运行以下 2 个命令来安装气流: export SLUGIFY_USES_TEXT_UNIDECODE=yes pip install apache-airflow(对于 Python 3 或 pip3) 打开一个新终端(我很惊讶,但这似乎是必需的)。 初始化气流数据库: airflow initdb

在此之后,您应该一切顺利!该博客详细介绍了其中许多步骤以及设置 WSL 需要多长时间的粗略时间表等 - 所以如果您很难深入了解这些步骤。

【讨论】:

嗨 John,您可以通过下载为这些依赖项准备的***来解决您在 Windows 下直接安装时遇到的 C++ 编译问题,参见。 lfd.uci.edu/~gohlke/pythonlibs,然后执行 pip install @Robert 谢谢提供了很好的信息!我怀疑它最终会起作用,我只是失去了最终坚持下去的意愿(考虑到我无论如何都会在 Linux 上运行 prod)。不过,我很高兴您为人们找到了真正的解决方案;我会尽量记住将我的博客链接到此评论,以便人们找到它:)。 嗨约翰,不幸的是,虽然可以解决编译问题,但在 Windows(本机、cygwin 和 WSL1)下缺少一个 Python 包,这最终导致我的努力失败(参见我对@Ayush K Singh 的答案)。我现在期待 Windows 10 的 WSL2——理论上,因为基于真正的 Linux 内核——应该能够编译 pwd 包。 对于选项 2,必须使用 ***.com/a/56923277/1333610 作为最后一步。 @JohnHumphreys-w00te 感谢您的回答,我还阅读了您关于安装气流的博文。我在这里要补充一件事。如果在 ubuntu 中安装了 python3,那么建议使用 sudo apt-get install python3-pip 安装 pip,否则默认情况下它将安装在 python 2.7 中【参考方案2】:

我正在使用 docker 在 Windows 10 上运行气流。

1) 首先你需要在你的windows上安装docker。

2) 如果你得到输出,从命令提示符运行命令docker version 意味着 docker 安装成功

2) 然后你需要使用命令docker pull puckel/docker-airflow拉取气流图像

3) 下一步是运行镜像docker run -d -p 8080:8080 puckel/docker-airflow webserver

4) 这将运行气流,您可以在 localhost:8080 访问 webui

5) 要复制 dag,请使用此命令 docker cp sample_dag.py containerName:/usr/local/airflow/dags

要访问气流实用程序,您需要访问 container 的 bash shell。您可以使用 docker exec -it containerName bash 这样做。 进入 bash shell 后,您可以运行命令行实用程序,例如 **airflow list_dags**

希望对你有帮助

【讨论】:

这是迄今为止最好的更新答案。您还可以创建一个 Dockerfile,将工作区文件夹复制到映像。 @Bruno 你能详细说明你的评论吗?我已经挣扎了好几天试图让气流运行,这个答案终于为我解决了这一切。现在我想知道如何操作它并每次都加载我所有的 dag + 保持容器始终运行。有什么建议吗? 我尝试了docker cp sample_dag.py containerName:/usr/local/airflow/dags 并将containxName 更改为我的容器名称,但是为什么不能将本地DAG 复制到容器的dags/ 文件夹中? (我使用的是 Windows)【参考方案3】:

您可以使用Cygwin 来完成。 Cygwin 是在 Windows 上运行并模拟 Linux 的命令行 shell。这样你就可以运行命令了,

# airflow needs a home, ~/airflow is the default,
# but you can lay foundation somewhere else if you prefer
# (optional)
export AIRFLOW_HOME=~/airflow

# install from pypi using pip
pip install apache-airflow

# initialize the database
airflow initdb

# start the web server, default port is 8080
airflow webserver -p 8080

注意 1:如果您在公司提供的计算机上运行 Cygwin,您可能需要以管理员身份运行 Cygwin 应用程序。您可以使用the following tutorial from Microsoft 进行操作。

注意 2: 如果您像我一样使用代理(在您的工作中或您使用的任何代理),您需要设置两个环境变量,以便 pip 在命令行上工作;在这种情况下,Cygwin。您可以关注this *** answer 了解更多详情。所以我在我的Windows机器上设置了以下两个环境变量,

// Note this first entry has an S in HTTPS and the other entry is just regular HTTP. Don't forget that distinction in the key name and in the url of the value.
HTTPS_PROXY=https://myUsernameGoesHere:myPasswordGoesHere@yourProxyHostNameGoesHere:yourProxyPortNumberGoesHere

HTTP_PROXY=http://myUsernameGoesHere:myPasswordGoesHere@yourProxyHostNameGoesHere:yourProxyPortNumberGoesHere

不再工作:显然上述所有工作都是徒劳的,因为 Airflow 无法在 Windows 上工作。请参阅此*** post。上述步骤将允许您使用 Pip。

或者,我知道这可能会或可能不会被视为在 Windows 上运行,您可以安装虚拟机客户端,例如 Oracle's Virtualbox 或 VMware's Workstation,然后设置任何 Linux 版本你想要比如Ubuntu Desktop 然后你就可以正常运行Linux了。如果您需要更详细的步骤来执行此操作,您可以按照 Stack Exchange 社区回答 here 中的 AskUbuntu。

或者 (2),您可以 create an AWS account,然后是 setup a simple ec2-instance running Linux,然后是 ssh into that ec2-instance,然后随心所欲地运行所有命令。 AWS 提供了free tier,因此您应该可以免费使用。此外,AWS 有很好的文档记录,因此启动并运行一个简单的 Linux 服务器应该不会太难;我估计初学者可以在大约一个小时内完成。

【讨论】:

我想知道这一切随着最近对 Windows 10 Ubuntu Linux 子系统的更新而发生了怎样的变化。【参考方案4】:

不要通过 pip 安装 Airflow,而是下载 Airflow project's GitHub 上的 zip,解压缩并在其文件夹中,在命令行上运行 python setup.py installERROR - 'module' object has no attribute 'SIGALRM' 错误会发生,但到目前为止这对 Airflow 的功能没有影响。

使用此方法,airflow util 将无法作为命令使用。 作为一种解决方法,请使用 [current folder]\build\scripts-2.7\airflow 文件,它是气流实用程序的 python 脚本。

另一种解决方案是在 System PATH 变量中附加一个指向运行气流 (airflow.bat) 的批处理文件的链接:

python C:\path\to\airflow %*

至此,教程可以正常进行了:

airflow init
airflow webserver -p 8080

我没有测试过 Airflow 的 DAG 在 Windows 上的运行情况或是否运行良好。

【讨论】:

由于缺少仅适用于 UNIX 系统的模块“pwd”,这不再起作用。 airflow\bin\cli.py", line 16 间接引用,daemon\daemon.py", line 25 直接引用【参考方案5】:

您可以在 Windows 中激活 bash 并按原样按照教程进行操作。 我能够按照上面的步骤成功启动并运行。

安装完成后,编辑 airflow.cfg 将所有配置指向 Windows 系统中的某个位置,而不是 lxss (ubuntu),因为 ubuntu 周围存在错误,无法显示 Windows 系统编写的文件。

【讨论】:

嗨,Ayush,这在当前版本的气流中不再起作用。它总是以ModuleNotFoundError: No module named 'pwd' 失败,由于技术原因,这是一个不适用于 Windows 的模块。【参考方案6】:

不幸的是,截至 2015 年 12 月,这个问题的答案似乎是“否” - 请参阅 https://github.com/airbnb/airflow/issues/709。这是因为转向 gunicorn。 gunicorn may get windows support in R18.

【讨论】:

以上是关于如何在 Windows 上运行 Airflow的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Airflow Scheduler 部署到 AWS EC2? [关闭]

如何在 Airflow 中运行 Spark 代码?

如何从 UI 停止/终止 Airflow 任务

如何在 Airflow 中设置 DAG 之间的依赖关系?

如何使用 AirFlow 运行 python 文件的文件夹?

Airflow:如何从不同的服务器进行 SSH 和运行 BashOperator