Как запустить Airflow в Windows

Обычные инструкции для запуска 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

Вы можете активировать bash в окнах и следовать инструкциям как есть. Я смог успешно встать и работать, следуя выше.

Как только вы закончите установку, отредактируйте airflow.cfg, чтобы указать все ваши конфигурации где-то в вашей системе Windows, а не lxss (ubuntu), так как есть ошибки вокруг ubuntu, не отображающие файлы, написанные системой Windows.

Ответ 2

Три основных варианта

Я прошел несколько итераций этой проблемы и задокументировал их по мере продвижения. Три вещи, которые я попробовал, были:

  1. Установите Airflow непосредственно в Windows 10 - эта попытка не удалась.
  2. Установите Airflow в Windows 10 WSL с Ubuntu - Это сработало отлично. Обратите внимание, что WSL - это подсистема Windows для Linux, которую вы можете бесплатно получить в магазине Windows.
  3. Установите Airflow в Windows 10 через Docker + Centos - Это также отлично работает.

Обратите внимание, что если вы хотите, чтобы он работал как служба Linux, это невозможно для варианта № 2. Это возможно для варианта № 3, но я этого не сделал, так как он требует активации привилегированных контейнеров в Docker (который я хочу не знаю, когда я начал). Кроме того, запуск службы в Docker является своего рода противоречием парадигме, поскольку каждый контейнер в любом случае должен быть отдельным процессом/единицей ответственности.

Подробное описание № 2 - опция WSL

Если вы гонг за вариант 2, основные шаги:

  • Установите WSL Ubuntu и установите его.
  • Убедитесь, что он поставляется с Python 3.6.5 или около того ("python3 -version").
  • Предполагая, что это все еще происходит, добавьте эти пакеты, чтобы установка PIP не помешала.
    • sudo apt-get установить software-properties-common
    • sudo apt-add-repository Universe
    • sudo apt-get update
  • Установите пункт с:
    • sudo apt-get установить python-pip
  • Выполните следующие 2 команды для установки воздушного потока:
    • export SLUGIFY_USES_TEXT_UNIDECODE = да
    • pip install apache-airflow
  • Откройте новый терминал (я был удивлен, но это казалось обязательным).
  • Инициируйте БД воздушного потока:
    • поток воздуха initdb

После этого вам должно быть хорошо идти! В блоге есть более подробная информация о многих из этих шагов и примерных сроках того, сколько времени займет установка WSL и т.д., Поэтому, если вам будет трудно погрузиться в это еще немного.

Ответ 3

Вместо того, чтобы устанавливать Airflow через pip, загрузите zip в GitHub проекта Airflow, разархивируйте его и в его папке запустите python setup.py install из командной строки. ERROR - 'module' object has no attribute 'SIGALRM' будут возникать ошибки, но пока это не оказывало влияния на функции Airflow.

При использовании этого метода утилита воздушного потока не будет доступна в качестве команды. В качестве обходного пути используйте файл [current folder]\build\scripts-2.7\airflow, который является скриптом python для утилиты airflow.

Другое решение состоит в добавлении к переменной System PATH ссылки на командный файл, который запускает airflow (airflow.bat):

python C:\path\to\airflow %*

С этого момента, учебник может следовать обычно:

airflow init
airflow webserver -p 8080

Я не проверял, насколько хорошо или AirAG DAG работают на Windows.

Ответ 5

Вы можете сделать это с помощью Cygwin. Cygwin - это оболочка командной строки, которая работает в Windows и эмулирует Linux. Таким образом, вы сможете запускать команды,

# 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. Вы можете следовать fooobar.com/info/37316/... для более подробной информации. Поэтому я установил следующие две переменные окружения на моем компьютере с 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:[email protected]:yourProxyPortNumberGoesHere

HTTP_PROXY=http://myUsernameGoesHere:[email protected]:yourProxyPortNumberGoesHere

Больше не работает: видимо, все вышеперечисленные работы были напрасны, потому что Airflow не будет работать в Windows. Пожалуйста, смотрите этот fooobar.com/info/1670897/.... Вышеуказанные шаги позволят вам использовать Pip.

В качестве альтернативы, и я знаю, что это может или не может рассматриваться как запуск в Windows, вы можете установить клиент виртуальной машины, такой как Oracle Virtualbox или VMware Workstation, а затем установить любую версию Linux, такую как Ubuntu Desktop, и затем вы можете запустить Linux обычно. Если вам нужны более подробные шаги, чтобы сделать это, вы можете следовать этому AskUbuntu из ответа сообщества Stack Exchange здесь.

В качестве альтернативы (2), вы можете создать учетную запись AWS, затем установить простой экземпляр ec2 под управлением Linux, затем ssh в этот экземпляр ec2 и затем выполнить все свои команды для своего сердца. AWS предлагает бесплатный уровень, поэтому вы сможете сделать это бесплатно. Плюс, AWS очень хорошо документирован, поэтому не должно быть слишком сложно запустить простой сервер Linux; Я предполагаю, что новичок мог бы быть сделан с этим приблизительно через час.