Dasar-dasar Apache Airflow dan Manfaat, Konsep, dan Serta Penggunaannya di Data Engineering

Airflow semakin digunakan, terutama untul ETL (extract, transform, load) di dunia data engineering. Untuk sistem data, peranti lunak open source ini memiliki banyak manfaat terutama untuk orkestrasi data. Ada banyak fungsinya, namun secara mendasar kita bisa memanfaatkan Airflow seperti to do list yang alurnya bisa disusun dalam flow. Tidak hanya sekadar to do list, nantinya perintah-perintah itu bisa dijalankan atau diorkestrasikan dalam urutan tertentu atau bahkan bisa berjalan dalam waktu tertentu, sesuai jadwal yang ditentukan.
Airflow secara singkat dan secara definisi adalah platform untuk mengatur, menjadwalkan, dan memonitor alur kerja (workflow) secara otomatis. Dengan kata lain, Airflow adalah tool yang efektif untuk data orchestration. Airflow bisa juga digunakan untuk level end user dengan kemampuan coding yang tidak terlalu rumit. Airflow menggunakan syntax Python untuk script-nya, membuat pengoperasiannya bisa lebih fleksibel. Ekosistem Airflow juga tergolong suportif. Dengna komunitas yang cukup aktif, tools yang penting buat sistem data ini bakal dipakai terus dalam waktu lama.
Secara adopsi, Airflow sudah meluas. Dalam survei terakhir yang dilakukan Apache Airflow di tahun 2023, kita bisa melihat bahwa penggunaan Airflow tidak terbatas pada data engineer saja. Mayoritas memang data engineer, di mana dari 803 total responden, ada 59% yang memiliki role tersebut. Namun, mereka yang punya role lain juga tidak sedikit. Dari total responden, terdapat 8,7% software engineer, 7,5% DevOps Engineer, 4,2% Data Analyst, 3,7% Data Scientist, dan posisi pekerjaan lain. Lengkapnya bisa cek di grafik di bawah ini.

Melihat data di atas, memang pada kenyataannya Data Engineer jadi role yang paling sering menggunakan Airflow. Tugas Data Engineer memang salah satunya membangun pipeline data. Dengan Airflow, proses ini bisa lebih terstruktur dan readable karena proses dan pemrogramannnya bisa ditulis dengan syntax Python. Dengan begini, maka script yang ditulis juga bisa dibaca oleh developer lain yang memahami Python.
Data Engineer memang pengguna utama Airflow. Tetapi, tidak ekskulsif untuk role itu saja. Data Analyst dan Data Scientist bisa memanfaatkan Airflow. Dengan memahami bagaimana Airflow bekerja, seorang Data Scientist misalnya bisa melakukan otomatisasi dari pipeline model ML yang sudah dibangun. Dengan melakukan penjadwalan dan orkestrasi, seorang data scientist bisa mengatur kapan data diambil, menggunakan model mana, dan di-deploy ke database yang mana.
Sebagai orang data, Airflow bisa memudahkan hidup. Tiap proses bisa dieksplor, diotomatisasi, dan juga bisa dimonitor. Belum lagi Airflow itu open source, ketika kita bisa deploy ini di server, biaya yang digunakan pun bisa lebih ditekan.
Dengan fungsi Airflow yang bisa mengatur workflow data pipeline, maka proses penjadwalan dan monitor pipeline jadi lebih efektif. Mari simak bagaimana penggunaan Airflow menggunakan contoh. Katakanlah kita mau membhuat data modelling di mana prosesnya adalah menarik data dari sebuah atau beberapa situs dengan metode scraping. Karena operasi scrape tidak hanya hari ini saja, tapi juga mau dilakukan rutin harian, lewat Airflow proses ini bisa dilakukan. Kita bisa menentukan frekuensi penarikan data lengkap dengan kapan proses ini dilakukan. Coba simak alur kerja di bawah ini.
Kita bisa satu persatu melihat prosed di bagan di atas lebih saksama untuk memahaminya. Skema di atas adalah flow sederhana untuk menarik data dari situs berita menggunakan metode scraping. Di bagian kiri, kita melihat news site atau situs berita sebagai sumber data. Untuk bisa mengambil informasi dari situs tersebut, kita menggunakan Python untuk melakukan proses scraping, mengambil informasi yang kita butuhkann seperti judul artikel berita dan kontennya.
Jika kita melakukan proses operasi paling dasar di Python, kita mengambil informasi yang dibutuhkan setelah kode Python (umumnya menggunakan library Beautiful Soup 4) dijalankan. Namun, karena kita mau mengambil informasinya secara rutin dan terjadwal, di Airflow kita bisa melakukan orkestrasi itu. Ambil contoh, Airflow lewat DAG akan memanggil perintah scraping di jam 2 pagi setiap hari. Maka, setiap hari operasi scraping itu akan dijalankan di jam yang disebutkan. Untuk DAG, kita akan bahas lebih dalam nanti.
Kadang setelah scraping dilakukan, data yang diambil belum tentu sesuai. Maka, proses berikutnya adalah membersihkan data tersebut. Operasi data cleaning juga bisa dipanggil oleh Airflow. Flow juga bisa diatur, misalnya untuk kasus ini, operasi data cleaning baru berjalan setelah scraping sukses dilakukan. Setelah itu, agar data harian bisa tersimpan rapi, maka di Airflow juga bisa dilakukan operasi load. Setelah data cleaning, proses berikutnya adalah menyimpan data tersebut ke database. Untuk contoh ini, data disimpan di MySQL.
Membaca proses di atas, membuat kita bisa menggunakan Airflow sebagai tools orkestrasi data yang kuat. Proses ETL / ELT menggunakan Airflow jadi lebih seru. Semua bisa dikustomisasi dengan lebih efekftif efisien dengan skema DAG. Untuk bisa memahami Airflow lebih teknis lagi, diagram di bawah ini boleh disimak.
Dari skema di atas, komponen-komponen mendasar yang perlu kita pahami terlebih dulu adalah DAG, Web Server, Scheduler, dan Worker. Komponen yang bakal sering diutak-atik adalah DAG, singkatan dari Directed Acylic Graph. DAG menjadi blueprint atau dokumen perintah untuk operasi tertentu. Jika DAG itu diminta untuk melakukan scraping, maka kode Python yang ditulis adalah operasi scraping. Sederhananya DAG bisa jadi to do list atas satu komponen dari keseluruhan pipeline.
Web server menjadi ‘rumah’ dari Airflow. Selain menjadi tempat untuk tampilan atau interface Airflow, web server memungkinkan pengguna untuk berinteraksi dengan sistem Airflow. Web server adalah tempat kontrol untuk berbagai pengoperasian di Airflow. Tampilan web server memudahkan pengguna untuk melakukan kustomisasi. Lihat screenshot di bawah untuk tampilan web server.
Dari interface web server, pengguna bisa mengakses fitur-fitur penting Airflow. Dari sini juga bisa melihat daftar DAG yang telah dibuat, memantau status eksekusi DAG, menjalankan atau menghentikan DAG, melihat log, atau mengatur jadwal. Dari web server juga bisa melihat kode yang ditulis untuk setiap DAG. Web server sudah masuk dalam paket ketika instalasi Airflow dilakukan.
Saat DAG sudah diatur dan diatur di web server, tentu butuh pekerja yang diperintahkan untuk menjalankan DAG. Dan, pekerja itu tentu menjalankan operasi di DAG sesuai jadwa. Di sini, Airflow punya komponen yang disebut scheduler dan worker. Worker adalah komponen yang menjalan DAG berdasarkan penjadwalan oleh scheduler. Apa yang harus worker kerjakan dan apa jadwal yang perlu scheduler taati diatur di dalam DAG. Anggap saja DAG itu surat perintah baik untuk worker dan scheduler.
Sekarang kembali ke diagram data scraping untuk situs berita tadi. Kali ini sudah diberi label kode DAG-nya.
Masing-masing operasi sekarang sudah diberi label DAG. Operasi web scraping adalah DAG_1, data cleaning adalah DAG_2, dan load to MySQL jadi DAG_3. Dan, dengan perintah tertentu, kita bisa menentukan flow dari DAG ini. Untuk contoh kasus ini, setelah DAG_1 sukses, maka perintah DAG_2 akan jalan. Setelah DAG_2 jalan dan sukses, maka perintah DAG_3 akan jalan. Jika DAG_1 tidak sukses, maka DAG_2 juga tidak dijalankan oleh worker. Begitu pula jika DAG_2 tidak sukses dijalankan, maka DAG_3 juga tidak jalan. Atau, syntax-nya: DAG_1 >> DAG_2 >> DAG_3.
Jika ingin melihat formatnya dalam bentuk kode Python, bisa cek contoh di bawah ini:
Melihat Airflow membuat orkestrasi data lebih praktis, maka tidak ada salahnya belajar tools ini meski Anda bukan seorang Data Engineer. Jika ingin membuat project sederhana, untuk menambah portfolio data, Airflow bakal berguna banget.
Tulisan berikut mengenai Airflow adalah lebih teknis, dimulai dari instalasi dan bagaimana memulai Airflow dan menjalankan DAG untuk pertama kali. Simak terus akun Medium ini untuk pembahas Airflow lainnya yang lebih tentunya lebih seru dan lebih mendalam. Untuk pranala lain soal Airflow yang bisa dibaca, silahkan cek link di bawah ini.
Situs resmi Apache Airflow
Komunitas Apache Airflow
GitHub Apache Airflow
It has been a while since my last post. I was sick for two weeks after coming back from a big data conference in San Francisco. Well, it seems like nobody can escape this wave as BA5 is dominating the COVID infection. Nowadays I still have a coughing problem but it gets better every day. This is an article about Airflow. Yes, there are many articles regarding Airflow in the Internet. However, I still found a good enough reason to document what I have learned when I tried to stand up an Airflow server: more than half of the articles out there are either outdated or didn’t really go into details about all the potential issues you would encounter during the installation.
By the way, I upgraded my Spark server to the latest framework which is 3.3.0. In addition, I also upgraded the server OS from Ubuntu 20.04 to 22.04. The upgrade was very smooth. I just needed to stand up a new cluster and point it to the same file system and connect it the same MySQL server for metadata store. I have to say Ubuntu 22.04 plus the new 3.3.0 Spark framework performs much better compared to my old cluster. The article I posted before about setting up a new Spark cluster via Oracle VirtualBox still works well for Ubuntu 22.04 and Spark 3.3.0.
My new Airflow server is in the same network as my Spark cluster. So, you can just follow my Spark installation article and prepare the Airflow server like a worker node. I followed this article Steps to Install and Setup Apache Airflow on Ubuntu 20.04 (hackerxone.com) but modified a few steps as I don’t want to use Python virtual environment for a server installation.
Here is my server prior to Airflow installation.

Here are the steps I followed from the article to install Airflow:
1. sudo apt install software-properties-common
2. sudo apt-add-repository universe
3. sudo apt install python-setuptools
4. sudo install python3-pip
5. sudo apt install libmysqlclient-dev
6. sudo apt install libssl-dev
7. sudo apt install libkrb5-dev
8. Make an airflow folder by issuing this command “mkdir airflow” in your home directory.
Some of those steps didn’t do anything to my new Ubuntu 22.04 server which comes with Python 3.10 runtime.
Now we need to create the airflow home environment variable. I executed this command “export AIRFLOW_HOME=~/airflow” just like how they did it in the article. Moreover, I also added this line to my ~/.bashrc file so the environment variable will stay after reboot.
Now let’s install apache-airflow by using python PIP.
“pip3 install apache-airflow”

It is very colorful right? Once the installation is completed, you need to reboot your server. If you don’t, airflow command would never register. So, go ahead and reboot your server and issue airflow command to check the version.

Now, let’s initialize the airflow database by issuing “airflow db init”.

Apparently, Apache replaced the old command “airflow initdb” with “airflow db init”.
The next step is to create an admin user.
airflow users create — role Admin — username admin — email admin — firstname admin — lastname admin
It will prompt you for a password.

Now create a “dags” folder inside your “airflow” home folder by:
“cd airflow”
“mkdir dags”
This newly created “dags” folder is where you will deploy your batch programs in the future. You can change the location of the “dags” folder by modifying airflow.cfg file. Here, I just took the default.

The default installation comes with over 30 dag examples. You can review them and learn how to develop your own dag package. I don’t want them to show up on Web UI because it is so convoluted. You can stop Airflow loading default examples by changing the setting “load_examples” to “False” inside airflow.cfg file. If you have already loaded the examples, you have to do a database reset after changing the setting to False.
“airflow db reset”

Now it is time to launch Airflow. First, you need to launch the airflow scheduler. Here is the command to launch it in the background.

Once the scheduler is up and running, you can launch Airflow Web server. You will manage Airflow mainly from its Web console. Once again, I brought up Airflow Web server in daemon mode.

Now, let’s fire up the browser and log on to Airflow Web console.

Great! Airflow is up and running now. So far so good right? Well, I started to run into issues when I tried to re-launch both the scheduler and web server after making some configuration changes. I could no longer launch them in the background for whatever reason. After some research, I found out that Airflow creates a pid extension file for both scheduler and web server the first time you launch them in the background. If you want to re-launch them again in daemon mode, Airflow would error out because it couldn’t overwrite those two pid files. What you need to do here is to delete both pid files.

To test out Airflow, I created a simple Hello World DAG python program and placed it in the “DAGS” folder. Refresh your Web UI and you will see the program showing up in “DAGs” directory. Here I am attaching my little Hello World program for you guys to test your Airflow server.

One more tip here. If your scheduler is not running, you won’t be able to see any new DAG objects in “dags” folder. The Web console will inform you if your scheduler is not running once you log on. This is important because it took me a good 15 minutes to figure out why I couldn’t see a new DAG object I just deployed.
Tidak ada komentar:
Posting Komentar