Belajar Menggunakan Apache Airflow di Docker

Tri Juhari
5 min readJul 24, 2021

--

Banyak dari orang orang yang ingin berkecimpung ke dunia data, namun mereka hanya memikirkan hal-hal yang dilakukan oleh perusahaan teknologi yang sangat mature seperti Google atau Twitter , contohnya menerapkan model pembelajaran mesin yang sangat canggih setiap saat.

Namun dibanyak perusahaan belum menjadikan sebuah model menjadi prioritas utama. Dikarenakan untuk membangun dan menerapkan model semacam ini secara efisien dan efektif, perusahaan perlu memiliki pondasi untuk infrastruktur data yang tepat yang dapat digunakan untuk membangun model.

Misalkan saya sebagai seorang data scientist di suatu perusahaan yang mengembangkan model pembelajaran mesin dengan data yang dimiliki perusahaan, namun disuatu momen terlintas pertanyaan berapa lama ini akan terus dilakukan, apakah pekerjaan ini akan dilakukan secara berulang ?.

Karena untuk mendapatkan model yang bagus perlunya iterasi terus menerus sehingga diperlukan sebuah tool yang dapat melakukan penjadwalan secara berkala, dengan penjadwalan ini seorang data scientist tidak perlu repot untuk melakukan running model terus menerus.Biarkan sistem yang mengatur penjadwalannya.

Salah satu tools yang digunakannya adalah Apache Airflow, yang merupakan “platform untuk menulis, menjadwalkan, dan memantau alur kerja secara terprogram”. Pada dasarnya airflow memungkinkan kita untuk menjadwalkan tugas untuk dijalankan, dengan urutan tertentu dan dilakukan monitoring.

Dalam tulisan kali ini saya akan menjelaskan secara singkat tentang beberapa konsep utama dalam Airflow dan kemudian menunjukkan penerapan Airflow selangkah demi selangkah dalam container Docker.

Konsep Penting Apache Airflow

Sebelum melakukan deploying ada beberapa basic konsep dalam memahami airflow ini.Untuk lebih jelasnya dapat berkunjung ke link ini.Dalam airflow perlu memahami konsep :

  1. DAG
  2. Operators
  3. Task

Directed Acyclic Graph (DAG)

DAG ini merupakan wadah yang berisi kumpulan task yang ingin kita running.DAG dapat ditampilkan dalam bentuk visual grafik dengan nodes dan edges. Node merepresentasikan sebagai task (tugas) dan edges merepresentasikan jalur antara task. Pada dasarnya, DAG mewakili alur kerja yang ingin kita atur dan kita pantau di Airflow.DAG ini tidak memiliki siklus , namun hanya start_task untuk awalan task yang akan dikerjakan dan finish_task.

Operators

Operator ini mewakili apa saja si yang sebenarnya dilakukan dalam tugas yang disusun dalam alur kerja DAG. Secara spesifik, operator mewakili satu tugas dalam DAG.Airflow menyediakan banyak kelas yang telah ditentukan sebelumnya dengan fleksibilitas yang tinggi seperti BashOperator, PythonOperator, EmailOperator, OracleOperator.

Tasks

Selama instantiasi, kita dapat menentukan parameter spesifik yang terkait dengan operator dan parameter.

Kenapa menggunakan docker ?

Tujuan saya menggunakan docker biar kelihatan keren aja, hahaha. Canda ding. Sebenernya banyak sekali manfaat ketika kita menggunakan docker, salah satunya :

Using docker containers means you don’t have to deal with “works on my machine” problems.

maksudnya adalah ketika kita menggunakan docker kita tidak perlu khawatir saat bekerja dengan sistem operasi komputer yang kita gunakan, karena project yang kita kerjakan bekerja di bawah environment si docker (kurang lebih mirip virtual mesin ), sehingga ketika bekerja menggunakan docker tidak ada istilahnya di komputer si A bisa run, tapi di komputer si B tidak bisa run.Karena sejatinya jika kita menggunakan docker apabila bisa bekerja di komputer si A, pasti bisa bekerja di komputer siapapun.Dengan docker kita bisa bekerja se efektif dan se efisien mungkin.

Install Docker dan Airflow

Dari penjelasan diatas setidaknya memberikan gambaran terkait project yang akan kita kerjakan. Sebelum melakukan project ini ada baiknya kalian sudah menginstall dockernya dan sudah menginstall apache airflow di dalam envinronment dockernya. Jika kalian belum menginstalnya di akhir tulisan ini akan saya sertakan referensi bagaimana menginstall docker.

selain harus terpasang docker di dalam komputer kita , kita juga harus memiliki akun Docker Hub. Jika sudah memiliki akun Docker Hub kemudian buka Docker Hub dan cari “Airflow” di daftar repositori.

Docker image yang saya gunakan adalah puckel/docker-airflow karena memiliki lebih dari 1 juta pull dan hampir 100 bintang. Selain itu kita dapat menemukan dokumentasi untuk repo ini di sini dan untuk repo github yang terkait dengan container docker ini di sini.

Untuk menginstall apache airflow ke dalam docker kita dapat menggunakan perintah di bawah ini:

docker pull puckel/docker-airflow

Untuk mengecek apakah airflow sudah terinstall kedalam docker kita bisa menggunakan perintah

docker images

karena saya menggunakan docker image puckel/docker-airflow, hasilnya di list tersebut terdapat docker image yang kita install , berarti airflow sudah terinstall kedalam dockernya.

Selanjutnya kita tinggal menjalankan airflownya dengan perintah

docker run -d -p 8080:8080 puckel/docker-airflow webserver

Jika sudah running kita bisa mengakses halaman UInya di alamat http://localhost:8080/admin/. Hasilnya seperti dibawah ini.

Untuk melihat apakah container airflow kita sudah berjalan bisa ikuti perintah

docker ps

Jika ingin masuk ke dalam command line di container airflow yang sedang berjalan dapat menggunakan perintah

docker exec -ti <container name> bash

FYI container name secara otomatis akan tergenerate ketika kita menjalankan containernya.

Menjalankan DAG di Airflow

Setelah container running, kemudia bagaimana kita mulai menjalankan DAGnya ?.

Di airflow DAG didefinisikan sebagai kode python. Jika kalian menggunakan code editor VS Code akan jadi lebih mudah saat menjalankan dag di airflow, Tinggal pilih menu remote kemudian hubungkan ke container yang berisi airflows

Apabila kita ingin menghubungkan lokasi direktori yang ada di local computer dengan lokasi data di airflow bisa menggunakan perintah dibawah ini.

docker run -d -p 8080:8080 -v /path/to/dags/on/your/local/machine/:/usr/local/airflow/dags  puckel/docker-airflow webserver

Untuk mencoba DAG pada Airflows dapat dilakukan mengcopykan file Helloworld.py ke local machine kita. Setelah menunggu beberapa menit, coba lakukan refresh di halam web Airflows dan kita bisa melihat DAG baru dengan nama Helloworld.

Setelah kita run, berikut tampilan DAG yang kita jalankan.

--

--

No responses yet