如何在 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 installpwd
包。
对于选项 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 install
。 ERROR - '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? [关闭]