Step 1 of 1

Устанавливать Apache Airflow в этом курсе будем двумя способами:

  1. Используя Docker и docker-compose
  2. Руками, создавая виртуальное окружение Python и устанавливая туда все зависимости

Первый способ простой и не требует никаких усилий. Достаточно запустить команду docker-compose up и всё будет готово. Файл docker-compose.yml можно найти в материалах к этому курсу на Github.

Второй способ установки подразумевает, что вы знаете что такое виртуальное окружение Python. На протяжении всего курса будет использоваться версия Python 3.8.

Перед началом работы с Apache Airflow необходимо убедиться, что установлен компилятор gcc и необходимые инструменты для разработчика:

sudo apt-get update
sudo apt-get install build-essential python3-dev libpq-dev

Создаём виртуальное окружение и активируем его:

python3 -m venv .venv
source .venv/bin/activate

Обновляем версию пакетного менеджера pip:

pip install pip -U

Всё готово для того, чтобы начать установку Apache Airflow. На момент написания этого текста самой последней версий Airflow является 2.0.1.

Также стоит упомянуть, что в версии 20.3 пакетного менеджера pip появился строгий механизм разрешения конфликтов между версиями. Наверняка вы сталкивались с ситуацией, когда 2 пакета используют одну и ту же зависимость, но требования к версии у них разное и они могут быть несовместимы. С выходом новой версии pip при выявлении такой ситуации установка будет прервана до решения проблемы. К сожалению, в Apache Airflow могут быть проблемы с неконсистентными версиями пакетов, поэтому стандартная команда pip install apache-airflow может сломаться. Разработчики рекомендуют либо использовать старую версию pip (<20.3), либо указывать флаг -use-deprecated legacy-resolver. Я пошел путём использования constraints файла. Более подробно что это такое можно прочитать по ссылке.

pip install apache-airflow[postgres,aws]==2.0.1 --constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.0.1/constraints-3.8.txt

Comments

при установке на линукс, после правки airflow.cfg, где прописали Postgres БД производим повторную инициализацию БД (в активированном вирт. окружении): $ airflow db init инициализация не сработала, т.к. не найден модуль PsycoPG2. Но модуль Psycopg2 не ставится, взамен предлагается установить PsycoPG2-binary: $ pip3 install psycopg2-binary C PsycoPG2-binary - работает

Шамиль, спасибо за комментарий. Для того, чтобы собрать psycopg2 из исходников предварительно нужно установить libpq-dev: pip install libpq-dev. Добавлю в док.

Добрый день! Предложил бы вынести в отдельный пункт(или пункты для каждого раздела) ссылки на материалы курса Например: Назвать раздел "Материалы Курса" в которой будут содержаться -- ссылка на github с материалами -- ссылка на задания с Yellow Taxi -- и тд

VIOLA, отличная идея. Так и сделаю, спасибо!

После docker-compose up часть контейнеров заводится, а часть выдает ошибки, содержащие ValueError: Unable to configure handler 'processor': [Errno 13] Permission denied: '/opt/airflow/logs/scheduler' и не заводятся. Как такое исправить?

Копирую решение из нашего чата в телеграме: для CentOs 7 после этой команды заработало sudo chmod u=rwx,g=rwx,o=rwx ./airflow-data/logs

Добрый день! При запуске контейнера возникает следующая ошибка: ERROR: The Compose file './docker-compose.yml' is invalid because: Invalid top-level property "x-airflow-common". Valid top-level sections for this Compose file are: version, services, networks, volumes, and extensions starting wit h "x-". You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service d efinitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1. For more on the Compose file format versions, see https://docs.docker.com/compose/compose-file/

При установке на MacOS сразу не устанавливается. Дело в кавычках: pip install 'apache-airflow[gcp,statsd,sentry]'==1.10.10

Привет, из текста не совсем понятно какой способ установки предпочтительней и есть ли какая-то разница для выполнения дальнейших заданий. Или надо попробовать установить двумя способами?

Добрый день! Разницы особой нет, выбирайте тот способ, который наиболее удобен для вас.

про ошибку при выполнении команды docker-compose up ни слова в комментах. Зачем тогда вообще это упоминать, если ни в курсе нет объяснений как и что делать, ни в ответах нет. У меня такая же ошибка. Такое ощущение, что курс наспех писался, между делом.

А о какой конкретно ошибке идёт речь? Я запускал docker-compose и всё работало отлично. Возможно есть проблема с совместимостью между версиями. В этом случае скажите, пожалуйста, какая версия докера и docker-compose у вас стоит.

Адиль, привет. При попытке запустить airflow через docker-compose получаю ошибку: airflow_webserver | Traceback (most recent call last): airflow_webserver | File "/home/airflow/.local/bin/airflow", line 5, in <module> airflow_webserver | from airflow.__main__ import main airflow_webserver | File "/home/airflow/.local/lib/python3.6/site-packages/airflow/__init__.py", line 34, in <module> airflow_webserver | from airflow import settings airflow_webserver | File "/home/airflow/.local/lib/python3.6/site-packages/airflow/settings.py", line 37, in <module> airflow_webserver | from airflow.configuration import AIRFLOW_HOME, WEBSERVER_CONFIG, conf # NOQA F401 airflow_webserver | File "/home/airflow/.local/lib/python3.6/site-packages/airflow/configuration.py", line 795, in <module> airflow_webserver | with open(AIRFLOW_CONFIG, 'w') as file: airflow_webserver | IsADirectoryError: [Errno 21] Is a directory: '/opt/airflow/airflow.cfg' Подскажете почему на запускается, самостоятельно не смог разобраться. Спасибо

У меня python 3.8 установлен, может дело в том что он по пути 3.6 обращается? /home/airflow/.local/lib/python3.6/site-packages/airflow/__init__.py

Проблема решена созданием файла airflow.cfg директории /airflow-data/airflow.cfg

Такая же ошибка как и у константина. Наверное не генерится файл airflow.cfg, попробовал вставить его руками, но не помогло

Возможно, для кого то это было очевидно, для меня нет. Это не ставиться для питона 3.10

Python 3.10 вышел относительно недавно и скорее всего ещё не все пакеты для него есть.

Content