Apache Airflow
Apache Airflow - известный планировщик для ETL процессов. ETL - это один из основных процессов в управлении хранилищами данных, который включает в себя: извлечение данных из внешних источников; их трансформация и очистка, чтобы они соответствовали потребностям бизнес-модели; и загрузка их в хранилище данных.
В этой статье мы не будем касаться вопросов работы с этим инструментом. Для этого будет отдельная статья. Но разберём установку его в облаке.
SA у нас уже готов: https://teletype.in/@cameda/w93lPMPQWS4
Выберем зону доступности А: https://teletype.in/@cameda/S34zdiTcbUM
Сеть и подсети создали ранее: https://teletype.in/@cameda/ZbTkF70KWK9
Адрес для ВМ зарезервировали: https://teletype.in/@cameda/o1poekVpPaO
SG будем использовать со всеми открытыми портами: https://teletype.in/@cameda/qpWd5IvF8EZ
Создадим скрипт для cloud-init:
#cloud-config
version: v1
package_update: true
package_upgrade: true
write_files:
- encoding: b64
content: VGVzc3R0dC4uLg==
owner: root:root
path: /opt/test
permissions: '0644'
packages:
- git
- htop
- mc
- tree
- make
- iftop
- iotop
- dstat
datasource:
Ec2:
strict_id: false
users:
- default
- name: cameda
gecos: Alexey Volkov
groups: sudo
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
lock_passwd: false
passwd: $6$rounds=4096$WhW2cxlj/QX90$Jic1yPwlpiWV98oX8akplpOX4e7pgJlWHCfKAyPiMf7xP1AqI7iocN/gjWQNX9WuIUf14LVgxJluajfOInk.u.
ssh_authorized_keys:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDI98mJDBN9cnp6HOdBYTQILeAhUSDvDfoqA9iLmVPDyPLFRWs7tE4BjCAcFD6a3M50QIboCaohfa7h+PWksYibab7I3QHOR7y9pCW8FGonGRw2ACvt906qlaWHFj7jWOxuihFoiRROKqLCW5YE/Yc4XFIvW1gu3JQdvQ1wemWvujsI8EHE6PI1pEg7/41y6kn3IhNHIr8WRLe4dPyPGjwc4LpBCcaRSJiX4YjVXynSIHNk365UrL+nGv8ix7bW5FNCgGqSgfUTVCfMYLzQ/gYHPVQrcIvCeHjkwluH8Z3gXeN3OliejBjpLi+IWIzd9K6UADSUNU8oL+9941tDidp8APoe7RbB4h3bY6k8Bhy0yxohgQS2OWSYd1mjeEx8Ba5wzJKqfpUgmcPdrBJnBwLgLMFQyEfYG6vTPkYWAKEvkkJ6ZiA4tdoQvCb+B0xJV/ivHyLtoi3LFE59mbQFDUy8O51vX9JjBDLwzyTEeslWp7uOP66Ti5Q5ucNXbs5yXTU= cameda@cameda-osx"login: cameda
password: Pa$w0rd
Создадим ВМ с Airflow:
export FOLDER=$(yc config get folder-id) export ZONE=ru-central1-a export SUBNET=$(yc vpc subnet get subnet-a --format json | jq -r '.id') export SA=$(yc iam service-account get cameda-service --format json | jq -r '.id') export SG=$(yc vpc sg get cam-all --format json | jq -r '.id') export IP=$(yc vpc address get airflow --format=json | jq -r ".external_ipv4_address" | jq -r ".address") yc compute instance create \ --folder-id $FOLDER \ --name cam-airflow \ --description "Airflow machine" \ --hostname cam-airflow \ --zone $ZONE \ --platform standard-v3 \ --create-boot-disk image-family=airflow-2x,size=60,type=network-ssd,block-size=8K \ --image-folder-id standard-images \ --memory 8 \ --cores 4 \ --core-fraction 100 \ --preemptible \ --network-settings type=standard \ --network-interface subnet-id=$SUBNET,nat-ip-version=ipv4,nat-address=$IP,security-group-ids=$SG \ --metadata serial-port-enable=1 \ --metadata-from-file='user-data=cloud-init.yaml' \ --service-account-id $SA \ --async
После создания ВМ к ней надо подключиться по ssh для того чтобы создать пользователя для работы с Airflow.
ssh -i ~/.ssh/id_rsa cameda@51.250.87.248
Создадим пользователя и выдадим ему необходимые права:
airflow users create -r Admin -u Cameda -e cameda4@yandex.ru -f admin -l user -p test
Здесь Admin - это пользовательская роль.
Если пользователя надо будет удалить, то выполним команду:
airflow users delete --username Cameda
Проверим работу:
Заходим в браузер на адрес: http://51.250.87.248
login: Cameda
password: test
Полезные ссылки.
Airflow in Marketplace:
https://cloud.yandex.ru/marketplace/products/yc/apache-airflow-2
Документация: https://airflow.apache.org/docs/apache-airflow/stable/index.html
Apache Airflow: делаем ETL проще: https://habr.com/ru/post/512386/