Sebelum menyentuh Apache Flink, kalian perlu menguasai konsep data processing batch versus stream, distributed systems, serta JVM dan bahasa JVM seperti Java atau Scala. Di episode ini kalian juga menyiapkan JDK, Docker, dan menginstall Apache Flink untuk menjalankan cluster lokal pertama.

Selamat datang di series Belajar Apache Flink! Series ini akan membawa kalian menguasai Apache Flink — open-source framework untuk stateful computation atas unbounded dan bounded data streams — dari fondasi konsep sampai production readiness. Total ada 23 episode yang tersusun dari enam fase belajar.
Tapi sebelum menulis job Flink pertama, ada beberapa skill dasar dan perangkat lunak yang wajib kalian miliki. Mengapa prasyarat ini penting? Karena Flink bukan sekadar tool ETL. Dia adalah distributed stream processing engine yang menjalankan Java atau Scala di atas JVM, menyimpan state di memory atau disk, dan berkoordinasi lintas proses. Tanpa pemahaman dasar tentang konsep tersebut, semua istilah seperti parallelism, checkpoint, dan watermark akan terasa seperti kotak hitam.
Episode 0 ini adalah peta jalan kalian: kita akan memastikan skill dasar, menyiapkan JDK dan Docker, menginstall Apache Flink versi stabil, dan melakukan verifikasi pertama dengan cluster lokal. Setelah episode ini selesai, seluruh series bisa diikuti dengan nyaman.
Flink dibangun untuk mengolah stream — data yang terus mengalir tanpa batas. Bedakan dulu dua model dasar ini:
Flink bisa menangani keduanya dengan model yang sama. Kalian wajib memahami perbedaan ini sebelum melangkah, karena hampir semua desain job Flink berakar dari cara pandang terhadap data.
Flink adalah sistem terdistribusi, jadi kuasai konsep inti berikut:
Istilah-istilah ini akan muncul terus sepanjang series, terutama saat kita membahas checkpointing di episode 6.
Kode Flink dijalankan di atas Java Virtual Machine. Kalian harus familiar dengan sintaks Java (atau Scala), konsep class, generics, dan lambda. Untuk tools, pastikan nyaman dengan terminal: tar, wget, java, dan variabel environment seperti PATH. Maven atau Gradle juga akan dipakai mulai episode 3 untuk membangun project.
java -version
javac -version
which javaOutput javac yang muncul menandakan Java Development Kit sudah terpasang. Perintah java -version di atas adalah cek pertama yang harus kalian biasakan.
Apache Flink 2.x membutuhkan JDK 17, sedangkan Flink 1.20 (LTS) masih mendukung JDK 11. Untuk mengikuti series ini dengan versi terbaru, pasang JDK 17:
sudo apt update
sudo apt install -y openjdk-17-jdk
java -versionPastikan output menampilkan 17.0.x atau lebih baru. Kalian bisa memakai distro manager lain seperti sdkman atau Homebrew di macOS — yang penting versinya cocok.
Mulai episode 8, kalian akan menghubungkan Flink dengan Kafka dan sistem lain. Docker sangat membantu untuk menjalankan dependensi tersebut secara lokal:
docker --version
docker compose versionSiapkan Docker sekarang agar nanti lancar. Kita akan memakai docker compose untuk membangkitkan Kafka dan Kinesis emulator di episode 8.
Instal IntelliJ IDEA Community atau VS Code dengan extension Java, serta Git untuk version control:
git --versionOpsional tapi berguna: Apache Kafka atau Kinesis sebagai sumber data streaming untuk eksperimen integrasi. Kalau belum punya, Flink punya DataGen connector bawaan yang bisa membangkitkan data sintetis — kita akan pakai itu mulai episode 4.
Per penulisan series ini, Apache Flink 2.3.0 adalah stable release terbaru. Unduh binary-nya dari mirror Apache:
wget https://archive.apache.org/dist/flink/flink-2.3.0/flink-2.3.0-bin-scala_2.12.tgz
tar -xzf flink-2.3.0-bin-scala_2.12.tgz
cd flink-2.3.0
lsStruktur folder flink-2.3.0 berisi bin/ untuk script CLI, conf/ untuk konfigurasi, examples/ untuk job contoh, dan lib/ untuk dependency. Kita akan membedah struktur ini lebih dalam di episode 3.
Flink mendukung mode standalone untuk belajar. Jalankan satu JobManager dan satu TaskManager dengan script bawaan:
./bin/start-cluster.sh
./bin/flink listPerintah ./bin/start-cluster.sh menyalakan cluster di mesin lokal, dan ./bin/flink list menampilkan daftar job yang sedang berjalan — untuk sekarang akan kosong. Perhatikan juga log yang muncul di folder log/.
Flink menyertakan contoh program WindowWordCount. Jalankan dengan flink run:
./bin/flink run examples/streaming/WindowWordCount.jar --input /etc/hostname
./bin/flink listSetelah selesai, flink list akan kosong kembali karena job sudah finished. Kalian baru saja menjalankan job Flink pertama — operasi flink run akan menjadi teman kalian di seluruh series.
Buka browser dan akses dashboard Flink:
http://localhost:8081Di sana kalian bisa melihat status cluster, daftar job, dan metrics. Dashboard ini penting untuk monitoring, yang akan kita bahas di episode 7 dan 13.
Ulangi langkah verifikasi sekaligus untuk memastikan semuanya siap:
java -version menampilkan JDK 17.docker --version dan docker compose version berjalan normal.flink-2.3.0 ter-extract dan cluster bisa distart.WindowWordCount berhasil dijalankan dan selesai.http://localhost:8081 bisa diakses../bin/stop-cluster.shRangkuman prasyarat yang sudah kalian siapkan di episode 0:
java -version.Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Fondasi yang kuat akan membuat 22 episode berikutnya terasa jauh lebih ringan.
Di episode 0 ini kalian sudah menyiapkan pijakan untuk seluruh series: memahami konsep data processing dan distributed systems, menyiapkan JDK 17 dan Docker, menginstall Apache Flink 2.3.0, menjalankan cluster standalone lokal, serta memverifikasi instalasi dengan job contoh WindowWordCount dan web dashboard.
Inti yang harus dibawa pulang:
./bin/start-cluster.sh dan web dashboard ada di http://localhost:8081.WindowWordCount dengan flink run dan cek hasilnya di dashboard.Di episode 1 selanjutnya kita akan membahas sejarah, latar belakang, dan mengapa memilih Flink — dari evolusi stream processing dari batch ke real-time, kelahiran Flink dari proyek penelitian Stratosphere, hingga perbandingannya dengan Apache Spark Streaming, Kafka Streams, dan Apache Beam. Pastikan environment kalian sudah siap, karena perjalanan Belajar Apache Flink baru saja dimulai!