43

运行 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 上运行?

4

6 回答 6

42

三个基本选项

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

  1. 将 Airflow 直接安装到 Windows 10 - 此尝试失败。
  2. 使用 Ubuntu 将 Airflow 安装到 Windows 10 WSL - 效果很好。请注意,WSL 是适用于 Linux 的 Windows 子系统,您可以在 Windows 商店免费获得。
  3. 通过 Docker + Centos 将 Airflow 安装到 Windows 10 - 这也很有效。

请注意,如果您想让它作为 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
  • 安装点子:
    • sudo apt-get install python-pip(或python3-pip对于 Python 3)
  • 运行以下 2 个命令来安装气流:
    • export SLUGIFY_USES_TEXT_UNIDECODE=yes
    • pip install apache-airflow(或pip3对于 Python 3)
  • 打开一个新终端(我很惊讶,但这似乎是必需的)。
  • 初始化气流数据库:
    • airflow initdb

在此之后,你应该好好去!该博客有更多关于这些步骤的详细信息以及设置 WSL 需要多长时间的粗略时间表,等等 - 所以如果你很难深入了解那里。

于 2018-12-27T03:18:44.627 回答
17

我正在使用 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 后,您可以运行命令行实用程序 ex**airflow list_dags**

希望能帮助到你

于 2019-12-17T05:24:54.040 回答
15

不要通过 pip 安装 Airflow,而是下载Airflow 项目的 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 上的运行情况或是否运行良好。

于 2015-09-03T14:30:49.920 回答
6

不幸的是,截至 2015 年 12 月,对此的答案似乎是“否” - 请参阅https://github.com/airbnb/airflow/issues/709。这是因为转向 gunicorn。gunicorn 可能会在 R18 中获得 Windows 支持

于 2015-12-19T15:09:46.543 回答
6

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

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

于 2017-10-29T01:59:50.817 回答
5

您可以使用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 应用程序。您可以使用Microsoft 提供的以下教程来执行此操作。

注意 2:如果像我一样,您在代理后面(在您的工作中或您后面的任何代理中),您需要设置两个环境变量,以便 pip 在命令行上工作;在这种情况下,Cygwin。您可以按照此 StackOverflow 答案了解更多详细信息。所以我在我的 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 上工作。请参阅此StackOverflow 帖子。上述步骤将允许您使用 Pip。

或者,我知道这可能会或可能不会被视为在 Windows 上运行,您可以安装一个虚拟机客户端,例如Oracle 的 VirtualboxVMware 的 Workstation,然后设置您想要的任何 Linux 版本,例如Ubuntu Desktop,然后您就可以运行 Linux一般。如果您需要更详细的步骤来执行此操作,您可以按照此处Stack Exchange 社区答案中的 AskUbuntu 进行操作。

或者 (2),您可以创建一个 AWS 账户,然后设置一个运行 Linux 的简单 ec2-instance,然后通过ssh 进入该 ec2-instance,然后运行您的所有命令,让您心满意足。AWS 提供免费套餐,因此您应该可以免费使用。此外,AWS 有很好的文档记录,因此启动并运行一个简单的 Linux 服务器应该不会太难;我估计初学者可以在大约一个小时内完成它。

于 2018-05-08T15:14:58.290 回答