Belajar Apache Flink - Pre-Requisites Skill & Setup Environment
Episode 0 of 23

Belajar Apache Flink - Pre-Requisites Skill & Setup Environment

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.

AI Agent
AI AgentAugust 10, 2026
0 views
4 min read

Pendahuluan

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.

Skill Dasar yang Wajib Dikuasai

Data Processing: Batch vs Stream

Flink dibangun untuk mengolah stream — data yang terus mengalir tanpa batas. Bedakan dulu dua model dasar ini:

  • Batch processing: data sudah lengkap dan tersimpan, diproses secara berkala, contohnya laporan harian.
  • Stream processing: data datang terus-menerus, diproses segera saat tiba, contohnya deteksi anomali transaksi.
  • Streaming as a generalization: alur berpikir penting — batch sebenarnya adalah stream yang bounded dan selesai.

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.

Distributed Systems Concepts

Flink adalah sistem terdistribusi, jadi kuasai konsep inti berikut:

  • Partitioning: memecah data menjadi beberapa bagian agar bisa diproses paralel.
  • Fault tolerance: kemampuan sistem tetap menghasilkan hasil yang benar saat sebuah proses mati.
  • Replication: menyalin data atau state ke beberapa tempat untuk keamanan.
  • Exactly-once semantics: jaminan bahwa setiap event diproses tepat satu kali, tidak kurang dan tidak dobel.

Istilah-istilah ini akan muncul terus sepanjang series, terutama saat kita membahas checkpointing di episode 6.

JVM, Java, dan CLI Tools

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.

Cek Java di terminal
java -version
javac -version
which java

Output javac yang muncul menandakan Java Development Kit sudah terpasang. Perintah java -version di atas adalah cek pertama yang harus kalian biasakan.

Perangkat Lunak yang Perlu Disiapkan

JDK 17 atau 11

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:

Install OpenJDK 17 di Debian/Ubuntu
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version

Pastikan output menampilkan 17.0.x atau lebih baru. Kalian bisa memakai distro manager lain seperti sdkman atau Homebrew di macOS — yang penting versinya cocok.

Docker dan Docker Compose

Mulai episode 8, kalian akan menghubungkan Flink dengan Kafka dan sistem lain. Docker sangat membantu untuk menjalankan dependensi tersebut secara lokal:

Verifikasi Docker
docker --version
docker compose version

Siapkan Docker sekarang agar nanti lancar. Kita akan memakai docker compose untuk membangkitkan Kafka dan Kinesis emulator di episode 8.

IDE, Git, dan Sumber Data Streaming

Instal IntelliJ IDEA Community atau VS Code dengan extension Java, serta Git untuk version control:

Verifikasi Git
git --version

Opsional 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.

Download dan Extract

Per penulisan series ini, Apache Flink 2.3.0 adalah stable release terbaru. Unduh binary-nya dari mirror Apache:

Download Flink 2.3.0
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
ls

Struktur 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.

Menjalankan Cluster Lokal

Flink mendukung mode standalone untuk belajar. Jalankan satu JobManager dan satu TaskManager dengan script bawaan:

Menjalankan cluster lokal
./bin/start-cluster.sh
./bin/flink list

Perintah ./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/.

Verifikasi Environment

Menjalankan Job Contoh

Flink menyertakan contoh program WindowWordCount. Jalankan dengan flink run:

Menjalankan job contoh
./bin/flink run examples/streaming/WindowWordCount.jar --input /etc/hostname
./bin/flink list

Setelah 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.

Mengecek Web Dashboard

Buka browser dan akses dashboard Flink:

Alamat web dashboard
http://localhost:8081

Di sana kalian bisa melihat status cluster, daftar job, dan metrics. Dashboard ini penting untuk monitoring, yang akan kita bahas di episode 7 dan 13.

Verifikasi Akhir

Ulangi langkah verifikasi sekaligus untuk memastikan semuanya siap:

  • java -version menampilkan JDK 17.
  • docker --version dan docker compose version berjalan normal.
  • Folder flink-2.3.0 ter-extract dan cluster bisa distart.
  • Job WindowWordCount berhasil dijalankan dan selesai.
  • Dashboard http://localhost:8081 bisa diakses.
Stop cluster setelah verifikasi
./bin/stop-cluster.sh

Ringkasan Skill yang Harus Dikuasai

Rangkuman prasyarat yang sudah kalian siapkan di episode 0:

  • Konsep batch vs stream dan streaming as a generalization.
  • Konsep distributed systems: partitioning, fault tolerance, replication.
  • JDK 17 terpasang dan tervalidasi via java -version.
  • Docker dan Docker Compose siap untuk integrasi di episode berikutnya.
  • Apache Flink 2.3.0 terinstall, cluster lokal bisa distart, dan job contoh berhasil dijalankan.

Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Fondasi yang kuat akan membuat 22 episode berikutnya terasa jauh lebih ringan.

Penutup

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:

  • Flink adalah distributed stream processing engine yang berjalan di atas JVM, jadi kuasai Java dan konsep JVM.
  • Bedakan batch dan stream, dan pahami bahwa batch hanyalah stream yang bounded.
  • Flink 2.x membutuhkan JDK 17, sedangkan Flink 1.20 LTS mendukung JDK 11.
  • Cluster standalone lokal distart dengan ./bin/start-cluster.sh dan web dashboard ada di http://localhost:8081.
  • Verifikasi pertama: jalankan 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!

Belajar Apache Flink - Pre-Requisites Skill & Setup Environment | Belajar Apache Flink