Docker üzerinden Airflow Projesi

Yunus Yarba
3 min readJul 4, 2022

--

Merhaba, bu yazımda sizlere Airflow üzerine yaptığım 2. projemden bahsetmek istiyorum. Projelerimde elimden geldiğince benim için yeni olan teknolojileride ekleyerek deneyimlemeye devam ediyorum.

Proje amacı, Source database de yer alan 4 tablonun ETL ile target database de yer alan 2 tabloyu besleyecek şekilde akışın tasarlanması. Source database için MariaDb, target database için PostgreSQL tercih ettim. Tablo kısıtlamalarını dikkate alarak projeyi tasarlamayı hedefledim. Tabloların oluştururken DBeaver kullandım. Tabloları arasındaki ilişkilere ve detaylara değinmeyi düşünmüyorum.

proje folder yapısı
  • Projede kullanılan veritabanları ve Airflow teknolojisi Docker üzerinde çalışmaktadır. Gerekli image larında çalışması için ‘docker-compose.yaml’ dosyası oluşturulmuştur.
  • DBeaver ve Python local den çalışmaktadır.
  • Docker üzerinde yapılan değişikliklerin local de tutulması için volumeler tanımlanmıştır.
  • ‘src’ altında veri manipülasyonları adım adım yapılmaktadır.
  • Veri manipülasyonu için veritabanı connect parametrelerini docker_compose bilgilerine göre doldurdum.
  • ‘host’ parametresini, aşağıda belirtilen komut çıktısına göre doldurdum. docker inspect image_name | grep IPAddress
  • Veritabanı bağlantısı yapıldıktan sonra bu veritabanı üzerinde işlem yapabilmek için ‘cursor’ tanımlanır.
  • ‘cursor’ tanımladıktan sonra amaca yönelik sql sorgusu yazılır.
  • Amaç gerçekleştikten sonra ‘connect’ ve ‘cursor’ kapatılır.
  • DAG Airflow’un temel konseptidir. Taskları, bağımlılık ve ilişkileri ile bir araya getirip nasıl çalışmalarını söyler.
  • DAG çalışma periyodunu Crontab guru test ederek doğru bir şekilde schedule_interval olarak tanımlayabiliriz.
  • ‘dags’ altında yer alan ‘case.py’ python dosyası ile de BashOperator ile iş akışı tasarladım.
  • BashOperator bash komutları çalıştırmamızı sağlar.
Tasklar Arasındaki İlişki
  • Amaca yönelik oluşturmuş olduğumuz .py dosyalarını airflow bashoperator ile çalıştırmak için .sh uzantılı dosyalar oluşturdum.
  • Bash script içerisinde .py dosyasının docker image içerisindeki path ve .py çalıştırma kodları yazılır.
Airflow Ekranları
DAG Detay Ekranı
  • Airflow için localhost:8080/health gittiğimiz zaman sistemin durumunu kontrol edebiliriz.

Genel olarak yaptığım proje akışından ve healtcheck ten bahsettim. Yaparken keyif aldığım projeyi yayınlamak istedim. Diğer yazılarda tekrar görüşmek üzere.

--

--