APACHE AİRFLOW TEMEL BİLGİLER DOCKER ,GOOGLE CLOUD ÜZERİNDE KURULUMU
Apache Airflow, 2015 yılında ilk sürümü Apache tarafından yayınlanan açık kaynaklı bir platformdur. Bu platform, projelerdeki iş akışlarını yazma, planlama ve web arayüzü üzerinden izleme yeteneği sunar. Özellikle, veri pipelinelerinin akışını planlama konusunda öne çıkar. Python uyumu, açık kaynak olması ve kullanıcı dostu web arayüzü sayesinde Airflow, özellikle Python projelerinin iş akışlarını düzenleme konusunda tercih edilir.
Airflow, iş akışlarını otomatikleştirmek için kullanılır. Belirli periyotlarda gerçekleştirilmesi gereken görevleri otomatik olarak gerçekleştirebilir (günlük, haftalık, aylık vb.). Ayrıca, Spark’tan Data Warehouse’a veri taşıma, veri işleme ve analiz, makine öğrenmesi modeli oluşturma, ETL işlemleri gibi birçok alanda kullanılabilir.
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 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.
1.a.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.
APACHE AİRFLOW;
Data streaming toolu değildir.
Ağır data processing yapan framework değildir.
Sonsuza dek süren işler yapılmaz.
Görev veya operatör (Task or operator) : Tanımlanmış bir iş birimi.
Workers: Workers, ilgili task’ı execute eden process olarak nitelendirilebilir.
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.
1.b.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,PostgresOperator verilebilir.
1.c.Airflow Kurulumu
1.c.1.Python — Docker — Airflow
- Visual Studio Code’u açın: Visual Studio Code’u başlatın.
- Dosyayı Açın: Sol üst köşede bulunan “File” menüsünden “Open Folder” seçeneğini seçin. Ardından, projenizin bulunduğu klasörü seçin.
- Yeni Dosya Oluşturun: Sağ tıklayın ve “New File” seçeneğini seçerek yeni bir dosya oluşturun. Adını “docker-compose.yaml” olarak adlandırın.
- Dosyayı Açın ve İçeriği Ekleyin: Oluşturduğunuz “docker-compose.yaml” dosyasını açın ve https://airflow.apache.org/docs/apache-airflow/2.7.3/docker-compose.yaml içeriği kopyalayarak yapıştırın.
- Terminali Açın: Visual Studio Code’da sol alt köşede bulunan “Terminal” sekmesini açın.
- Docker Container’ını Oluşturun: Terminal bölümüne aşağıdaki komutu yazarak Docker üzerinde Airflow container’ını oluşturun:
docker-compose up -d
Sonrasında Docker üzerinden kontrol edebilmek için;
1.c.2.GCP Üzerinden Airflow Oluşturma
1.Dashboard’dan Compute Engine’e Gidin: Sol üst köşede bulunan “Navigation Menu” (genellikle üç çizgi veya daire simgesi) üzerine tıklayın ve “Compute Engine” seçeneğine gidin.
2. Create Instance (Örnek Oluştur) Sayfasına Gidin: Compute Engine sayfasında, sol taraftaki menüden “Instances” bölümüne gidin. Ardından, sayfanın üst kısmındaki “Create Instance” butonuna tıklayın.
VM Instance Ayarlarını Yapın:
- Name (Ad): VM’nize bir ad verin.
- Region (Bölge): VM’nizi oluşturmak istediğiniz coğrafi bölgeyi seçin.
- Machine Type (Makine Türü): VM’nizin donanım özelliklerini belirtin.
- Diğer ayarları da ihtiyacınıza göre yapılandırın.
1.VM Oluşturun: VM ayarlarınızı yaptıktan sonra “Create” veya “Oluştur” butonuna tıklayarak VM’nizi oluşturun.
2.VM’nizi Kontrol Edin: VM oluşturulduktan sonra “Instances” bölümüne giderek VM’nizin durumunu kontrol edin. Durumu “Running” olarak gözükmesi gerekir.
3.Airflow’a Erişim Sağlayın: Tarayıcınızı kullanarak VM’nin dış IP adresini ve belirttiğiniz portu kullanarak Airflow web arayüzüne erişim sağlayabilirsiniz.
UNUTMA:Firewall kısımından “ Create a firewall rule “dan port ayarlamaları ve oluşturulmaları gerçekleştirilir.Eğer daha önceden oluşturulmuş ise portunu aktif hale getirilir.Getirilmez ise airflow çalışmaz.
Firewall Kuralı Oluşturun:
- “Firewall” bölümüne gidin ve “Create a firewall rule” seçeneğine tıklayın.
- Oluşturulan kuralın “Name” kısmına bir ad verin.
- “Source IP Ranges” kısmında “0.0.0.0/0” (herkes) seçeneğini belirtin.
- “Protocols and ports” kısmında gerekli portları ekleyin (örneğin, 8080 portu Airflow web arayüzü için).
3.Ardından, SSH seçeneğine tıklayarak sanal makineye erişim sağlayın ve gerekli aşağıdaki komutları çalıştırın.
sudo apt update
sudo apt upgrade
sudo apt install docker.io
sudo apt docker-compose
echo -e "AIRFLOW_ID=$(id -u)" > .env
nano docker-compose.yml
NOT: En son docker-compose.yml dosyasının oluşturulması için yapıldı.
4. Açılan kısıma Visual Code ‘daki docker-compose.yaml içindeki kodunu buraya yaz.CTRL-X sonra y(yes) yazıp ENTER a bas.
sudo docker-compose up airflow-init
sudo docker-compose up -d
5. İşlem tamamlandıktan sonra, Google Cloud Console sayfasına dönün ve “VM Instances” bölümünden oluşturduğunuz sanal makinenin “External IP” bölümündeki IP adresini kopyalayın. Daha sonra, tarayıcınızda yeni bir sekme açın ve adres çubuğuna kopyalanan IP adresini ekleyerek, örneğin:
{local}
. Bu adımdan sonra çıkan arayüzde kullanıcı adı (username) kısmına "airflow" ve şifre (password) kısmına "airflow" yazarak giriş yapın.
cd dags/
Yukarıdaki kodu terminalde çalıştırdıktan sonra, dags
dizinine gidilir. Bundan sonra Airflow yapılarını oluşturabilirsiniz.
1.c.3.GCP — Cloud Composer Üzerinden Airflow Oluşturma
Google Cloud’un yapısında, Composer hizmeti, Airflow işlemlerini gerçekleştirebilen bir yapıya sahiptir. Bu işlemleri gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:
- Google Cloud Console’a giriş yapın ve sol taraftaki menüden “Composer” bölümüne gidin.
- “Create Environment” (Ortam Oluştur) butonuna tıklayarak yeni bir Composer ortamı oluşturun.
- Oluşturulan ortama bir ad ve ID verin, bölge ve konfigürasyon ayarlarını seçin.
- Ortam oluşturulduktan sonra, sol menüden “DAGs” bölümüne giderek DAG’larınızı yönetebilir ve oluşturabilirsiniz.
- Yeni bir DAG eklemek için “Create” butonuna tıklayın ve Python tabanlı bir DAG dosyası ekleyerek iş akışlarınızı oluşturabilirsiniz.
Bu adımlar, Google Cloud Platform üzerinde Cloud Composer kullanarak Airflow işlemleri gerçekleştirmenize yönelik genel bir rehberdir. Kurallara uygun bir şekilde bu adımları takip ederek, Cloud Composer üzerinden Airflow işlemlerinizi yönetebilirsiniz.
Composer 2 kısımından genel ayarlamalı yaptıktan sonra airflowun oluşması için belli bir süre beklenir.(Bu süre biraz uzun olabiliyor.)
1.d. Airflow User Interface
Airflow kullanıcı arayüz ekranı aşağıdaki gibidir. Ana sayfa incelendiğinde DAG’ların listeleri görünmektedir.Belirli bir DAG’ın kaç kez başarıyla çalıştırıldığı, kaç kez başarısız olduğu, son yürütme süresi ve diğer bazı yararlı bağlantılar gibi size DAGS’nin özet bir görünümünü verecektir.