Apache Airflow Nedir?

Apache Airflow Nedir?
13 Haz 2023

APACHE AIRFLOW

Apache Airflow, şirketlerin iş akışlarının giderek karmaşık bir hal alması sebebiyle ortaya çıkan, toplu iş akışlarını geliştirmek, planlamak ve izlemek için kullanılan açık kaynaklı bir araçtır. Airflow’un genişletilebilir Python framework’ü sayesinde neredeyse tüm teknolojilerle bağlantılı iş akışları oluşturulabilir. 

Airflow; 

  • Data pipeline oluşturur. Her bir görevi zamanında çalıştırır.
  • Task’ların bağımlılıklarına göre sırayla çalışmasını sağlar.
  • Kullanıcı arayüzü (UI) sayesinde oluşturulan taskların durumu kolayca incelenir ve yönetilir.

Airflow Özellikleri

  • Scalable: İş yüküne göre scalable özelliği vardır. 
  • Dynamic: Python dilinde tanımlanmış olduğu için python dili kullanılarak data pipeline’lar oluşturulur. 
  • Extensible: Airflow framework, teknolojilere bağlanmak için operatörleri kullanır. Airflow komponentleri, kullanıcı ihtiyaçlarına göre genişletilebilir. 
  • User-Interface: Kullanışlı bir UI’a sahiptir. Oluşturulan task’lar, data pipeline’larda oluşan hatalar, bu hataların hangi operatörlerde oluştuğu gibi işlemler kolayca anlaşılmaktadır.

Airflow Mimarisi

  • Scheduler: Tanımlanan iş yükleri scheduler komponenti ile birlikte executor komponentine iletilir. Zamanlanmış iş akışlarını tetikler.
  • Executor: Executor, Scheduler komponentine bağlıdır. Scheduler içindeki her bir task’ın nasıl çalışması gerektiğini tanımlar. Apache Airflow için tanımlı birden fazla executor bulunmaktadır. En yaygın olanları aşağıda listelenmiştir. 
    • Sequential Executor: Airflow default kurulumundaki varsayılan yürütücüdür. Sequential, sadece tek bir task’ı (görev) çalıştırabilir. Bu sebepten dolayı production ortamlarda tercih edilmez.
    • Local Executor: Tek bir worker node’a sahiptir. Sequential Executor’den farklı olarak üzerinde birden fazla task çalıştırılabilir. 
    • Celery Executor: Celery Executor, diğerlerinden farklı olarak clustering bir yapıya sahiptir. Worker node sayısı birden fazla olabilir. Eğer worker node’lardan birisi çevrim dışı olursa, Celery Executor hızlıca görevleri diğer worker node’lara gönderir ve high availability sağlanmış olur. Scheduler komponenti, task’ları worker node’a gönderirken bir kuyruk sistemi (queue system) kullanır. Aralarındaki iletişimi sağlar. Kuyruk sistemine Redis veRabbit MQ örnek verilebilir.
    • Kubernetes Executor: Kubernetes Executor, her bir task’ı Kubernetes cluster’ı içerisinde kendi bölmesinde çalıştırır. Kaynak yönetimi ve maliyetini yönetmek için oldukça faydalıdır. 
  • Web Server: DAG’ların, task’ların durumunu incelemek, manuel olarak task’ları tetiklemek için kullanılan, kullanıcı arayüzü sunan bir web sunucusudur.
  • Metadata Database: Scheduler, executor ve webserver komponentlerinin durumunun depolandığı veri tabanıdır. 
  • Workers: Workers, ilgili task’ı execute eden process olarak nitelendirilebilir.

pastedGraphic_1.png

Airflow Temel Bileşenleri

  • DAGs: İş akışının temel bileşenidir. İçerisinde birden fazla task ve operatör içerir. 
  • Task: DAG içindeki her bir iş birimine verilen isimdir.
  • Operators: İş akışındaki her bir task, bir operatör tarafından tanımlanır. Belirli bir görevi yerine getirmesi için yazılmış birden çok operatör vardır. Örnek olarak; PythonOperator, BashOperator ve OracleOperator verilebilir.

Airflow User Interface

Airflow kullanıcı arayüz ekranı aşağıdaki gibidir. Ana sayfa incelendiğinde DAG’ların listeleri görünmektedir. Airflow default kurulumunda daha önceden oluşturulmuş örnek DAG’lar listelenmektedir. Bu örnek DAG’lar isteğe göre ana ekrandan kaldırılabilir. 

pastedGraphic_2.png

DAGs ekranı altındaki sütunlar incelendiğinde;

  • DAG: DAG’ın ismi,
  • Owner: DAG’ın sahibi,
  • Runs: DAG’ın çalışma statüsü (running, failed, success gibi)
  • Schedule: DAG’ın cron bilgisi,
  • Last Run: DAG’ın son çalıştığı zaman,
  • Next Run: DAG’ın bir sonraki çalışma zamanı,
  • Recent Tasks: En son çalıştırma işleminden sonra task’ların durumu olarak sıralanmaktadır.

pastedGraphic_3.png

Airflow tarafından daha önce oluşturulmuş örnek bir DAG içeriği aşağıdaki şekilde gösterilmiştir.

pastedGraphic_4.png

DAG ismi tutorial_etl_dag. Bu DAG’ın Tree yapısı incelendiği zaman kullanılan operatörler, DAG’ın içinde bulunan task’lar ve bunların çalıştıktan sonraki durum bilgisi yer almaktadır. DAG içerisinde üç tane task olduğu görülür. Bunlar extract, transform ve load olarak sıralanır. Son çalışma durumları incelendiği zaman her bir task’ın başarılı bir şekilde çalıştığı görülmektedir. 

İlgili DAG’ın Graph yapısı aşağıdaki şekilde gösterilmiştir. 

pastedGraphic_5.png

Yukarıdaki şekilde görüldüğü gibi bu akışın tümüne DAG denir. Kutucuk içerisinde görülen kısımlar ise birer task’tır. Bu task’lar Operatör komponenti sayesinde oluşturulur. 

Apache Airflow’da dependency kavramı vardır. Yani task’lar birbirleriyle bağımlı olabilir. Yukarıdaki DAG incelendiği zaman ilk olarak “extract” task’ı çalışacaktır. Eğer task başarılı bir şekilde tamamlanırsa “transform” task’ı çalıştırılacaktır. “Transform” task’ı da başarılı olursa “load” task’ı çalışacak ve process işlemi tamamlanmış olacaktır. Eğer bu task’ların herhangi biri “failed” olursa bağımlı olduğu diğer task’lar çalışmayacaktır. 

İlgili DAG’ın Details bilgisi aşağıdaki şekilde gösterilmiştir.

pastedGraphic_6.png

Yukarıdaki şekilde görüldüğü gibi Detail kısmında, DAG ile ilgili temel bilgilere erişilebilir. DAG’ın ne zaman tetikleneceği, başlama ve bitiş tarihleri, DAG konfigurasyonunda kullanılan default argümanlar, task sayısı gibi bilgiler yukarıdaki şekilde görünmektedir. 

Bunlara ek olarak bir DAG’ın; Calendar, Task Duration, Task Tries, Landing Times, Gantt ve Code bilgilerine de kullanıcı arayüz ekranından erişilebilir.

pastedGraphic_7.png

Üst menü incelendiği zaman:

  • DAGs: DAG’ların özellikleri, logları, kodları gibi kısımlar burada yer alır.
  • Security: Bu kısımda kullanıcı, roller ve özellikleri yer alır.
  • Browse: DAG ve task’ların çalışma durumlarının ayrıntılı bilgisi burada yer alır.
  • Admin: Konfigurasyon, connection ve plugin gibi ayarlamalar burada yapılır.
  • Docs: Airflow dokümanı burada yer alır.

Yazımızda; Apache Airflow’un özellikleri, mimarisi ve temel bileşenlerine değindik. Bunlara ek olarak Apache Airflow kullanıcı arayüzünde bulunan komponentlerin açıklamalarını da aktardık.Her işletim sisteminde basit bir scheduler bulunmaktadır. Ancak karmaşık ve birbirine bağımlılığı bulunan işleri zaman planına uygun olarak organize etmek ve izlemek, işletim sistemleri ile gelen scheduler’lar ile yapılmaya çalışıldığında büyük sıkıntılar ile karşılaşılabilmektedir. 

GTech olarak uzman ekibimiz ile, projelerimizin bir parçası AirFlow’u çözüm mimarinize entegre etmenize ve merkezi bir scheduler olarak zamanlanmış işlerinizi AirFlow üzerinden organize etmenize yardımcı oluyoruz. Hemen bizimle iletişime geçerek veri bilimi alanında ihtiyaç duyduğunuz profesyonel hizmetlere kolaylıkla ulaşabilirsiniz. 

 

Yazar: Mehmet Can Yılmaz, GTech Büyük Veri ve Analitik Danışmanı.