Apache Airflow Mimarisi ve Temel Bileşenleri

Apache Airflow Mimarisi ve Temel Bileşenleri

Günümüzde birçok şirket ve kurum veri odaklı hale geliyor ve günlük işlerinin bir parçası olarak veri boru hatları geliştiriliyor ancak rutin olarak gerçekleştirilen bu işlem baş belası olabiliyor. Bu probleme çözüm olarak üretilmiş olan araçlardan biri olan airflow aracını birlikte tanıyalım.
Seda Kayademir24 Eyl 2022

Apache airflow, 2014 yılında airbnb şirketinin iş akışlarının giderek karmaşık bir hale gelmesiyle ortaya çıkan iş akışlarını programlı olarak yazmak, planlamak ve takip etmek için açık kaynaklı bir araçtır. 

 

Apache airflow'un faydaları

  • Kullanım kolaylığı: Başlamak için sadece biraz python bilgisine ihtiyacınız var.
  • Açık kaynak topluluğu: Airflow ücretsizdir ve geniş bir aktif kullanıcı topluluğuna sahiptir.
  • Entegrasyonlar: Kullanıma hazır operatörler, airflow'u bulut platformları ile (Google, AWS, Azure, vb.) entegre etmenize olanak tanır.
  • Standart python ile kodlama: Ek teknolojiler veya çerçeveler hakkında bilgi sahibi olmadan python kullanarak esnek iş akışları oluşturabilirsiniz.
  • Grafiksel kullanıcı arayüzü: İş akışlarını izleyip ve yönetebilir, devam eden ve tamamlanan görevlerin durumunu kontrol edebilirsiniz. 

 

Airflow mimarisi

Bir iş akışı, bir DAG (Yönlendirilmiş döngüsel grafik) olarak temsil edilir. Bir DAG, görevler (eylem öğeleri) içerir ve bunlar ile yürütülme sırası arasındaki bağımlılıkları belirtir. Zamanlayıcı, zamanlanmış iş akışlarını yönetir ve görevleri, onları çalıştıran yürütücüye gönderir. Yürütücü, görevleri çalışanlara iletir. Bir airflow mimarisinin diğer tipik bileşenleri, durum meta verilerini depolamak için bir veritabanı, görevleri ve DAG'leri denetlemek ve hata ayıklamak için kullanılan bir web sunucusunu ve DAG dosyalarını içeren bir klasörü içerir.

 

DAG örneği

 

Airflow temel bileşenleri

 

Airflow mimarisi

 

DAG (Yönlendirilmiş döngüsel grafik) 

Yürütme sırasına sahip bir dizi görev.

Görev veya operatör (Task or operator) 

Tanımlanmış bir iş birimi.

Web sunucusu (Web server)

Airflow kullanıcı arayüzüdür, ayrıca airflow kurulumu için kullanıcıları, rolleri ve farklı konfigürasyonları yönetmemizi sağlar.

Zamanlayıcı (Scheduler)

İşleri programlar ve görevleri düzenler. Hangi görevlerin, ne zaman ve nerede çalıştırılması gerektiğine karar vermek için DAG nesnesini kullanır.

Meta veri veritabanı (Metadata database)

Airflow durumlarını saklar.

Yürütücü (Executor)

Görevleri yürütür. İki tür yürütücü vardır. Görevleri yerel olarak çalıştıranlar ve görevlerini uzaktan yürütenler. Airflow, varsayılan olarak yerel bir yürütücü olan sequential executor ile yapılandırılmış olarak gelir. 

Yürütücü türleri: 

Yerel yürütücüler (Local executors)

  • Debug executor
  • Local executor
  • Sequential executor

Uzak yürütücüler (Remote executors)

  • Celery executor
  • Celery kubernetes executor
  • Dask executor
  • Kubernetes executor
  • Local kubernetes executor

 

Kancalar (Hooks)

Airflow, üçüncü taraf sistemlerle arayüz oluşturmak için Kancaları kullanır ve harici API'lere ve veritabanlarına (örn. Hive, S3, GCS, MySQL, Postgres) bağlantı sağlar.

Sağlayıcılar (Providers)

Belirli bir hizmet için temel operatörleri ve kancaları içeren paketler. Doğrudan bir airflow ortamına kurulabilirler.

Eklentiler (Plugins)

SalesForce'tan amazon redshift'e veri göndermek gibi belirli görevlerin gerçekleştirilmesine yardımcı olacak çeşitli kancalar ve operatörler.

Bağlantılar (Connections)

Harici bir sisteme bağlantı sağlayan bilgileri içerir. Bu, kimlik doğrulama kimlik bilgilerini ve API belirteçlerini içerir. Bağlantıları doğrudan kullanıcı arayüzünden yönetebilirsiniz ve hassas veriler şifrelenecek ve postgreSQL veya mysql'de saklanacaktır.

 

Airflow ile diğer iş akış platformlarının karşılaştırılması

Duymuş olabileceğiniz iyi bilinen bazı iş akışı yöneticileri ile airflow’u karşılaştıralım.

 

 

Data pipelines with apache airflow

Bazı araçlar ilk olarak bir şirketin çalışanları tarafından (eski) oluşturulmuştur.

Kullanıcı arayüzlerinin kalitesi ve özellikleri büyük ölçüde farklılık gösterir.

https://github.com/bitphy/argo-cron.

 

Bu iş akışı yöneticilerinin her birinin kendi güçlü ve zayıf yönleri olsa da, hepsi birden çok görev içeren ve bağımlılıkları olan boru hatları tanımlamasına ve çalıştırılmasına olanak tanıyan benzer temel işlevler sağlar. Araçlar arasındaki temel farklılıklardan biri, iş akışlarını tanımlama yöntemidir. 

 

Kaynaklar:

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.