Apache Airflow ile Veri Pipeline'ı Kurmanın Adımları
Beceri rehberi

Apache Airflow ile Veri Pipeline'ı Kurmanın Adımları

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Apache Airflow ile DAG tasarlama, zamanlama, hata yönetimi ve izleme adımlarını örnek bir veri akışı üzerinden öğrenin; sık hatalar ve öğrenme yolu.

Airflow veri pipeline kurulumunda ne işe yarar?

Apache Airflow, veri işlerinin hangi sırayla, ne zaman ve hangi koşulda çalışacağını kodla tanımlayıp yöneten açık kaynaklı bir iş akışı orkestrasyon aracıdır. Verinin kendisini işleyen bir motor değildir. Veritabanı sorgularını, Python betiklerini, bulut servislerini ve dönüşüm araçlarını doğru sırayla tetikleyen bir koordinatör gibi çalışır.

Bir veri pipeline'ı genellikle kaynaktan veri çekme, hazırlık alanına yükleme, dönüştürme, kalite kontrolü ve raporlama katmanına yayınlama adımlarından oluşur. Bu adımlar elle ya da tek bir uzun betikle yönetildiğinde, bir adım düştüğünde nerede kalındığını bilmek, yeniden denemek ve bağımlılıkları takip etmek zorlaşır. Airflow bu sorunu zamanlama, bağımlılık tanımı, otomatik yeniden deneme ve görsel izleme ile çözer.

DAG, görev ve operatör: temel kavramlar

Airflow'da her pipeline bir DAG olarak tanımlanır. DAG (yönlü döngüsüz graf), görevlerin ve aralarındaki sıra ilişkisinin tanımıdır. Döngüsüz olması, bir görevin kendi çıktısına bağımlı hale gelememesi demektir; böylece çalışma sırası her zaman belirlidir.

  • Görev (task): DAG içindeki tek bir iş birimi.
  • Operatör: görevin ne yapacağını belirleyen şablon. Komut çalıştıran, Python fonksiyonu çağıran ya da bir veritabanı veya bulut servisiyle konuşan operatörler vardır.
  • Sensör: bir dosyanın gelmesi gibi bir koşulu bekleyen özel görev türü.
  • Zamanlayıcı (scheduler): DAG dosyalarını okuyan ve zamanı gelen görevleri sıraya koyan bileşen.
  • Yürütücü (executor): görevleri gerçekten çalıştıran katman.
  • Metaveri veritabanı: çalışmaların ve görevlerin durumunu saklar.

Görevler arasında küçük bilgi parçaları aktarmak için XCom mekanizması kullanılır. Büyük veri setleri XCom ile taşınmaz; görevler arasında veri, ortak bir depolama alanı üzerinden el değiştirir, XCom ise yalnızca dosya yolu ya da kayıt sayısı gibi küçük referansları taşır.

Adım adım: ilk pipeline nasıl kurulur?

  • Önce akışı kâğıt üzerinde çizin: kaynak nedir, hedef nedir, hangi dönüşümler hangi sırayla yapılacak, hangi adım hangisini beklemeli.
  • Geliştirme ortamını kurun ve DAG dosyalarının okunacağı klasörü belirleyin. Yerelde bir konteyner tabanlı kurulum, denemeler için yeterlidir.
  • DAG'ı tanımlayın: ad, başlangıç tarihi, zamanlama sıklığı ve varsayılan yeniden deneme ayarlarını yazın.
  • Her işi ayrı bir görev yapın: çekme, yükleme, dönüştürme, kontrol, yayınlama. Tek görev tek sorumluluk taşısın.
  • Bağımlılıkları tanımlayın: hangi görev bitince hangisi başlayacak. Paralel çalışabilecek kolları ayrı bırakın.
  • Bağlantı bilgilerini koda gömmeyin; Airflow'un bağlantı ve değişken yönetimini kullanın.
  • DAG'ı elle tetikleyerek deneyin, her görevin günlüğünü okuyun, sonra zamanlamayı açın.

Zamanlama kısmında sık karışan nokta, Airflow'un bir çalışmayı ait olduğu veri aralığıyla ilişkilendirmesidir. Bir günlük aralığa ait çalışma, o aralık bittikten sonra başlar. Bu mantığı baştan anlamak, geriye dönük doldurma (backfill) yaparken sürprizleri önler.

Örnek senaryo: gece çalışan satış verisi akışı

Örneğin bir perakende şirketi, her gece mağaza satışlarını raporlama veritabanına almak istiyor. DAG'ın ilk görevi bir sensördür: sipariş sisteminden günlük dışa aktarım dosyasının gelmesini bekler. Dosya geldiğinde ikinci görev dosyayı hazırlık tablosuna yükler.

Üçüncü görev satırları temizler, para birimlerini ve tarih biçimlerini standartlaştırır. Dördüncü görev kalite kontrolü yapar: kayıt sayısı sıfır mı, zorunlu alanlar boş mu, toplamlar kaynakla tutuyor mu. Kontrol başarısızsa DAG durur ve ekibe bildirim gider; rapor bozuk veriyle beslenmez. Kontrol geçerse son görev tabloyu raporlama katmanına yayınlar.

Bu yapı sayesinde bir gece kaynak dosya gecikirse sensör bekler, bir adım geçici bir bağlantı hatası alırsa yeniden dener ve kalıcı bir hata olduğunda tam olarak hangi görevin düştüğü arayüzde görünür.

Hata yönetimi, izleme ve üretim ortamı

Üretimdeki bir pipeline'ın değeri, hata anında ne yaptığıyla ölçülür. Görev düzeyinde yeniden deneme sayısı ve bekleme süresi tanımlanır; geçici ağ kesintileri insan müdahalesi olmadan atlatılır. Kalıcı hatalarda e-posta ya da mesajlaşma aracına bildirim gönderen geri çağırma (callback) fonksiyonları kullanılır.

Bir görevin çalışma süresi için üst sınır koymak, takılı kalan işlerin tüm zamanlamayı kilitlemesini önler. Arayüzdeki ağaç ve ızgara görünümleri geçmiş çalışmaların durumunu, görev günlükleri ise hata nedenini gösterir.

Üretim ortamında ek konular devreye girer: yürütücü seçimi ve ölçeklendirme, gizli bilgilerin güvenli saklanması, DAG kodunun sürüm kontrolü ve test edilerek yayına alınması, eş zamanlı çalışan görev sayısının kaynaklara göre sınırlandırılması. Bu başlıklar küçük bir deneme kurulumundan, ekip tarafından işletilen bir platforma geçişin asıl işidir.

Sık yapılan hatalar

  • Tekrar çalıştırılamayan görevler yazmak. İyi bir görev, aynı veri aralığı için iki kez çalıştığında aynı sonucu üretir. Ekleme yerine ilgili aralığı silip yeniden yazmak bu yüzden tercih edilir.
  • XCom ile büyük veri taşımak. Metaveri veritabanı şişer ve zamanlayıcı yavaşlar.
  • DAG dosyasının en üst düzeyinde ağır işlem yapmak. Zamanlayıcı dosyaları sürekli okur; üst düzeydeki bir veritabanı sorgusu her okumada çalışır.
  • Tek devasa görev yazmak. Hata olduğunda hangi parçanın düştüğü anlaşılmaz, yalnızca bozuk kısım yeniden çalıştırılamaz.
  • Geriye dönük doldurma davranışını bilmeden zamanlama açmak. Başlangıç tarihi çok eskideyse çok sayıda çalışma bir anda tetiklenebilir.
  • Kalite kontrolü olmadan yayınlama. Orkestrasyon yalnızca işin çalıştığını söyler, verinin doğru olduğunu söylemez.

Başlangıçtan ileri düzeye öğrenme yolu

Başlangıç aşamasında Python'da fonksiyon yazmayı, temel SQL'i ve komut satırını rahat kullanmak yeterlidir. Ardından mimariyi öğrenin: zamanlayıcı, yürütücü, metaveri veritabanı ve arayüz birbiriyle nasıl konuşuyor. İlk DAG'ı yazıp küçük bir dosya akışını otomatikleştirin.

Orta aşamada operatör kütüphanesine geçin: veritabanı, bulut depolama ve mesajlaşma entegrasyonlarını kullanın, sensörleri, dallanmayı ve dinamik görev üretimini deneyin. XCom'un sınırlarını, bağlantı ve değişken yönetimini öğrenin.

İleri aşamada üretim konularına odaklanın: yürütücü seçimi, ölçeklendirme, izleme ve uyarı kurgusu, test edilebilir DAG kodu, sürüm kontrolü ve dağıtım süreci. Bu noktada Airflow'u tek başına değil, dönüşüm araçları, veri ambarı ve izleme sistemleriyle birlikte düşünürsünüz.

Airflow'u Mindset programında nerede çalışırsınız?

Mindset kataloğundaki Airflow ile Veri Pipeline'ları eğitiminin modül başlıkları bu yolu izler: Airflow Mimarisi ve Temel Kavramlar, DAG Tasarımı ve Python Temelli İş Akışları, Zamanlama, Bağımlılık ve Tetikleyiciler, Airflow Veri Akışı ve XCom, Operatör Kütüphanesi ve Entegrasyonlar, İzleme, Hata Yönetimi ve Uyarılar, Üretim Ortamı ve Ölçeklendirme.

Programın başlıkları yukarıdaki aşamalarla örtüşür; mimariden başlayıp üretim ortamına kadar ilerler.

İlgili Mindset programı

Airflow ile Veri Pipeline'ları

Sık sorulanlar

Sık sorulan sorular

Airflow ile ETL aracı aynı şey mi?

Değil. Airflow bir orkestrasyon aracıdır: işlerin sırasını, zamanını ve hata davranışını yönetir. Veriyi dönüştüren işi ise sizin yazdığınız kod, SQL ya da başka bir dönüşüm aracı yapar. Airflow bunları tek bir akışta bir araya getirir ve çalışmasını izler. Bu yüzden ETL araçlarıyla birlikte kullanılır, onların yerini almaz.

Airflow öğrenmek için hangi bilgiler gerekir?

Temel düzeyde Python, SQL ve komut satırı yeterlidir. DAG dosyaları Python ile yazıldığı için fonksiyon, modül ve hata yakalama konularına aşina olmak işi kolaylaştırır. Veri ambarı, bulut depolama ve konteyner bilgisi ise ilerledikçe gerekir ve pipeline'ı gerçek ortama taşırken faydalı olur.

Küçük bir proje için Airflow fazla mı gelir?

Tek bir betiği günde bir kez çalıştırmak için basit bir zamanlayıcı yetebilir. Birden fazla adım birbirine bağımlıysa, hata durumunda yeniden deneme ve izleme gerekiyorsa ya da akış sayısı artıyorsa Airflow'un getirdiği yapı karşılığını verir. Kurulum ve bakım yükü de karar ölçütüdür.

Backfill nedir, neden önemlidir?

Backfill, geçmiş tarih aralıkları için DAG çalışmalarını sonradan üretmektir. Yeni bir pipeline kurduğunuzda ya da bir hatayı düzelttikten sonra eski dönemlerin verisini yeniden işlemek için kullanılır. Görevleriniz tekrar çalıştırılabilir yazılmışsa backfill güvenli olur; aksi halde mükerrer kayıt üretebilir.

Pipeline hata verdiğinde nereye bakmalıyım?

Önce arayüzde hangi görevin kırmızıya döndüğünü bulun, sonra o görevin günlüğünü açın. Hata geçiciyse yeniden deneme ayarları devreye girmiş olabilir. Kalıcıysa kaynak sistem, bağlantı bilgisi ya da veri biçimi değişikliği gibi nedenleri sırayla kontrol edin ve yalnızca düşen görevi temizleyerek yeniden çalıştırın.