Apache Airflow, gerçek dünya üretim ortamlarında veri iş akışlarını güvenilir bir şekilde çalıştırmak için tasarlanmış bir orkestrasyon aracıdır. Ancak bu aracın ardındaki mimariyi anlamadan, karmaşık veri borularınızı (pipelines) verimli bir şekilde yönetmeniz mümkün olmayacaktır. Airflow, dört temel bileşenin senkronize çalışmasıyla iş akışlarınızı planlar, izler ve yürütür. Bu bileşenler arasında birbirleriyle sürekli haberleşen bir sistem bulunur ve her biri farklı bir rol üstlenir.
Airflow’un Dört Temel Bileşeni
Apache Airflow’un mimarisi, aşağıdaki dört ana bileşenden oluşur. Bu bileşenler birbirleriyle etkileşime geçerek veri iş akışlarınızın sorunsuz bir şekilde çalışmasını sağlar.
- Web Sunucusu (Webserver): Kullanıcı arayüzü olarak görev yapan bu bileşen, tarayıcınızda gördüğünüz arayüzdür. Veri akışlarınızın durumunu görüntüler, görevlerin başarı durumunu, çalışma sürelerini ve hata raporlarını sunar. Ayrıca manuel olarak iş akışlarını tetiklemenize veya durdurmanıza olanak tanır.
- Planlayıcı (Scheduler): Airflow’un kalbi olarak adlandırılan Planlayıcı, veri akışlarınızın (DAG’ler) tanımlarını sürekli olarak tarar. Zamanlama kurallarını (örneğin, "Her gün geceyarısı çalıştır") analiz eder ve görev bağımlılıklarını kontrol eder. Bir görev çalıştırılmaya hazır olduğunda, bu bileşen görevi yürütülmek üzere ilgili motorlara (Executor) iletir.
- Meta Veritabanı (Metadata Database): Airflow’un tüm durum bilgilerini sakladığı merkezi veritabanıdır. Bu veritabanı genellikle PostgreSQL veya MySQL gibi ilişkisel veritabanı sistemlerinde barındırılır. Planlayıcı, herhangi bir görevin başlatılması, başarılı olması veya başarısız olması durumunda bu veritabanına kayıt yapar. Web Sunucusu ise bu kayıtları okuyarak kullanıcı arayüzünü günceller.
- Yürütücü ve İşçiler (Executor & Workers): Planlayıcı neyin çalıştırılması gerektiğine karar verirken, Yürütücü ve İşçiler bu görevlerin nasıl gerçekleştirileceğini yönetir. Yürütücü, görevleri doğrudan yerel bir bilgisayarda sıralı olarak çalıştırabilir veya Kubernetes gibi küme sistemlerinde dağıtarak büyük ölçekli veri iş akışlarını işleyebilir. İşçiler ise bu görevleri fiziksel olarak yerine getiren bileşenlerdir.
Bir Veri Akışı Nasıl Çalışır? Adım Adım İnceleme
Veri akışlarının nasıl çalıştığını anlamak için, Airflow’un bileşenlerinin birbirleriyle nasıl etkileşime geçtiğine yakından bakalım. Aşağıda, basit bir veri iş akışının çalışma sürecini adım adım inceleyeceğiz:
- Tanımın Kaydedilmesi: Öncelikle, Python dosyası olarak yazdığınız veri akışınızı (DAG) Airflow’un tanımlama dizinine kaydedersiniz. Planlayıcı bu dosyayı okur ve yapıyı Meta Veritabanına kaydeder.
- Zamanlama Kontrolü: Planlayıcı, belirlenmiş zamanlama kuralına göre (örneğin, her gün geceyarısı) veri akışınızın çalıştırılması gerektiğini tespit eder. Veritabanındaki durumunu "Çalışıyor" olarak günceller.
- Görevlerin Aktarılması: Planlayıcı, ilk görevi Yürütücüye aktarır. Yürütücü de bu görevi, sistem yapılandırmasına bağlı olarak, tek bir bilgisayarda veya bir kümedeki İşçilere dağıtır.
- Görevlerin Yürütülmesi: İşçiler, görevleri yerel olarak çalıştırır. Örneğin, bir API’den veri çekme işlemini gerçekleştirir veya veriyi temizleyip kaydeder.
- Durum Güncellemesi: İşçiler, görevlerin tamamlanma durumunu (başarılı/başarısız) Meta Veritabanına kaydeder. Bu bilgiler Web Sunucusu tarafından okunarak kullanıcı arayüzünde görüntülenir.
- Sonuçların Görüntülenmesi: Kullanıcı, tarayıcısında Web Sunucusunu açarak veri akışının durumunu kolayca takip edebilir. Başarılı bir işlem sonucunda yeşil bir onay işareti görüntülenirken, başarısız bir işlemde kırmızı bir hata mesajı belirir.
İlk DAG’inizi Yazmaya Başlayın: Basit Bir Python Örneği
Airflow’ta veri akışlarınızı tanımlamak için Python dosyaları kullanırsınız. Aşağıda, basit bir örnek veri akışı tanımlaması bulunmaktadır. Bu örnekte, iki görev bulunur: veri çekme ve veriyi işleme.
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
# Veri akışınızı tanımlayan DAG yapılandırması
with DAG(
dag_id="basit_veri_pipesi",
start_date=datetime(2026, 1, 1),
schedule="@daily",
catchup=False,
tags=["baslangic_seviyesi"],
) as dag:
# İlk görevi tanımlayın
@task()
def veri_cek():
print("Kaynak API'den veri çekiliyor...")
# İkinci görevi tanımlayın
@task()
def veri_isle():
print("Veri başarıyla temizlendi ve kaydedildi!")
# Görevlerin bağımlılıklarını ayarlayın
veri_cek() >> veri_isle()Kodun Detaylı Açıklaması
- `with DAG(...) as dag:` Bloku: Bu blok, veri akışınızın tanımlayıcı bir çerçevesini oluşturur. İçinde yer alan tüm görevler otomatik olarak bu DAG’e ait olur ve izole bir şekilde yönetilir.
- `@task()` Dekoratörü: Bu dekoratör, standart Python fonksiyonlarını Airflow görevlerine dönüştürür. Airflow, görevleri bağımsız olarak yönetir, bu nedenle
veri_isle()fonksiyonunda oluşabilecek bir hata, ana sistemde herhangi bir aksaklığa neden olmaz.
- `>>` Operatörü: Bu operatör, görevler arasındaki bağımlılıkları görsel olarak tanımlar.
veri_cek() >> veri_isle()ifadesi,veri_cek()görevi tamamlanmadanveri_isle()görevine başlanmaması gerektiğini belirtir.
- Parantezler (`()`):
@taskdekoratörlerini kullanırken, fonksiyon adlarının yanında parantezler (veri_cek()) kullanmanız gerekir. Bu, Python’a görevin Airflow tarafından takip edilmesi için bir örneğini oluşturmasını söyler.
Bu dosyayı Airflow’un tanımlama dizinine kaydettiğinizde, Planlayıcı tarafından otomatik olarak algılanacak ve Web Sunucusu arayüzünde görsel bir diyagram olarak görüntülenecektir. Bu sayede, veri akışlarınızın durumunu kolayca izleyebilir ve yönetebilirsiniz.
Veri Mühendisliğinde Airflow’un Önemi
Veri mühendisliği alanında çalışmaya yeni başlayanlar için Airflow, karmaşık komut dosyalarını otomatikleştirilmiş ve akıllı sistemlere dönüştürmenin en etkili yollarından biridir. Web Sunucusu, Planlayıcı, Meta Veritabanı ve Yürütücü bileşenlerinin birbirinden bağımsız ancak birbirleriyle senkronize çalışması, modern yazılım sistemlerinin nasıl tasarlandığını anlamanıza da yardımcı olur.
Airflow’u kullanmaya başladıktan sonra, veri borularınızın yönetimini basitleştirirken aynı zamanda güvenilirliğini de artırabilirsiniz. Bu sayede, veri iş akışlarınızı herhangi bir manuel müdahaleye gerek kalmadan otomatik olarak çalıştırabilir ve takip edebilirsiniz. Veri mühendisliğinde başarının anahtarı, doğru araçları kullanmak ve sistemin mimarisini tam olarak anlamaktan geçer. Apache Airflow da bu hedefe ulaşmanızda size büyük destek olacaktır.
Yapay zeka özeti
Apache Airflow’un dört temel bileşeniyle veri iş akışlarınızı nasıl planlar, izler ve otomatikleştirirsiniz? Veritabanı, Planlayıcı ve Web Arayüzü detaylarını keşfedin.