Belajar Apache Flink - Instalasi & Menjalankan Job Flink
Episode 3 of 23

Belajar Apache Flink - Instalasi & Menjalankan Job Flink

Episode ini membawa kalian mempraktikkan instalasi standalone Flink cluster dan menjalankan job pertama dengan perintah flink run. Kalian akan memahami struktur direktori Flink, konfigurasi di config.yaml, membaca log, serta mengenal lifecycle job dan web dashboard di port 8081.

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

Pendahuluan

Episode 2 memberi kalian konsep. Episode 3 ini mengubah konsep menjadi praktik: kita akan mengoperasikan cluster Flink sungguhan, memahami struktur direktori dan file konfigurasi, menjalankan job dengan CLI, lalu membaca lifecycle-nya dari web dashboard. Semua yang kalian lakukan di sini akan dipakai setiap hari saat bekerja dengan Flink.

Kemampuan mengoperasikan cluster bukan keterampilan tambahan — ini keterampilan inti. Engineer yang bisa membaca log dan memahami status job akan jauh lebih efektif daripada yang hanya bisa menulis kode. Episode ini adalah langkah pertama menuju level tersebut.

Instalasi Standalone Cluster

Persiapan Folder dan Environment

Pastikan JDK 17 terpasang dan folder Flink sudah ter-extract seperti episode 0. Buat variabel environment agar lebih mudah:

Setup FLINK_HOME
export FLINK_HOME=/home/kalian/flink-2.3.0
export PATH=$FLINK_HOME/bin:$PATH
flink --version

Dengan PATH ter-update, perintah flink bisa dipanggil dari mana saja. Perintah flink --version seharusnya menampilkan Version: 2.3.0.

Menjalankan dan Menghentikan Cluster

Start cluster standalone yang terdiri dari satu JobManager dan satu TaskManager:

Start dan cek cluster
$FLINK_HOME/bin/start-cluster.sh
jps

Perintah jps (Java Process Status) menampilkan proses JVM yang berjalan. Kalian akan melihat StandaloneSessionClusterEntrypoint (JobManager) dan TaskManagerRunner (TaskManager). Dua proses inilah jantung cluster kalian.

Folder instalasi Flink memiliki struktur standar yang penting dipahami:

DirektoriIsi
bin/Script CLI: flink, start-cluster.sh, sql-client.sh
conf/Konfigurasi: config.yaml, log4j.properties
lib/Dependency inti dan connector yang dimuat cluster
examples/Job contoh siap pakai
log/File log JobManager dan TaskManager
plugins/Plugin opsional yang dimuat saat startup

Memahami struktur ini membantu kalian men-deploy connector: untuk menambah Kafka connector di mode standalone, kalian meletakkan JAR-nya di lib/ lalu me-restart cluster.

Struktur direktori Flink
flink-2.3.0/
  ├── bin/        → flink, start-cluster.sh, sql-client.sh
  ├── conf/       → config.yaml, log4j.properties
  ├── lib/        → flink-dist, flink-table JAR
  ├── examples/   → streaming, batch, table
  ├── log/        → .log dan .out per komponen
  └── plugins/    → s3-fs, cloud-fs, dll

Konfigurasi: config.yaml

Sebelum Flink 1.19, konfigurasi utama bernama flink-conf.yaml. Sejak 1.19, file ini direstrukturisasi menjadi config.yaml dengan key berformat kebab-case. Untuk series ini yang berbasis 2.3, kita memakai config.yaml — tetapi kalian akan sering menemukan dokumentasi lama yang masih menulis flink-conf.yaml.

Key Konfigurasi yang Sering Dipakai

Beberapa key yang wajib dikenal sejak awal:

Config dasar di conf/config.yaml
jobmanager.rpc.address: localhost
jobmanager.memory.process.size: 1600m
taskmanager.memory.process.size: 2048m
taskmanager.numberOfTaskSlots: 4
parallelism.default: 2
rest.port: 8081
  • taskmanager.numberOfTaskSlots menentukan slot per TaskManager.
  • parallelism.default adalah parallelism default job tanpa setting eksplisit.
  • rest.port menentukan port REST API dan web dashboard.

Ingat bahwa setiap perubahan membutuhkan restart cluster. Konfigurasi parallelism.default akan sering kalian sentuh saat bereksperimen dengan parallelism.

Memeriksa Log

Log adalah sumber kebenaran saat debugging:

Membaca log cluster
ls $FLINK_HOME/log/
tail -f $FLINK_HOME/log/*standalonesession*.log

File dengan akhiran .log berisi log detail komponen, sedangkan .out berisi output konsol. Biasakan tail -f pada log JobManager untuk melihat aktivitas real-time.

Mode Attached dan Detached

Perintah flink run memiliki dua mode penting:

  • Attached (default): CLI menunggu sampai job selesai atau dibatalkan.
  • Detached (-d): CLI langsung kembali setelah job terkirim, cocok untuk produksi.
Menjalankan job detached
$FLINK_HOME/bin/flink run -d examples/streaming/WindowWordCount.jar \
  --input /etc/passwd --output /tmp/wordcount-result

Perintah flink run -d mengirim job ke cluster dan langsung mengembalikan kontrol ke terminal. Flag -d ini akan kalian pakai terus di sepanjang series.

Flag Penting lainnya

Beberapa flag yang sering dipakai bersama flink run:

Menjalankan dengan class utama
$FLINK_HOME/bin/flink run -c com.example.WordCount target/wordcount.jar
  • -c menentukan main class saat JAR berisi banyak class.
  • -p mengatur parallelism job.
  • -s <path> me-restore job dari savepoint (dibahas di episode 16).

Lifecycle Job dan Web Dashboard

Status dan Daftar Job

Setiap job berjalan melalui lifecycle: CREATED → RUNNING → FINISHED atau FAILED, dengan status antara seperti RESTARTING dan CANCELLING. Pantau dengan CLI:

List dan cancel job
$FLINK_HOME/bin/flink list -a
$FLINK_HOME/bin/flink cancel <jobId>

Perintah flink list -a menampilkan semua job termasuk yang sudah selesai beserta job ID-nya. flink cancel <jobId> menghentikan job yang sedang berjalan.

Membaca Web Dashboard

Buka http://localhost:8081. Dashboard menampilkan:

  • Overview: jumlah TaskManager dan slot yang tersedia.
  • Running Jobs: daftar job aktif dengan status dan durasi.
  • Job Details: job graph, parallelism, dan metrics per operator.

Dari tab Job Details kalian bisa melihat grafik DAG pipeline — visualisasi langsung dari konsep source, transformasi, dan sink di episode 2. Untuk sekarang, cukup pastikan dashboard menampilkan satu TaskManager dengan slot sesuai konfigurasi.

Ringkasan alur menjalankan job
start-cluster.sh → flink run -d job.jar → cek flink list → amati dashboard → cancel/stop

Penutup

Episode 3 melatih kalian mengoperasikan cluster Flink: memahami struktur direktori dan peran setiap foldernya, mengonfigurasi config.yaml (penerus flink-conf.yaml), menjalankan job dengan flink run dalam mode attached dan detached, memantau status via CLI, serta membaca job graph dari web dashboard di port 8081.

Inti yang harus dibawa pulang:

  • Cluster standalone distart dengan start-cluster.sh dan diverifikasi dengan jps.
  • Konfigurasi utama sejak Flink 1.19 bernama config.yaml, menggantikan flink-conf.yaml.
  • Gunakan flink run -d untuk mengirim job tanpa menunggu, dan flink list -a untuk melihat semua job.
  • Log ada di log/ dan merupakan sumber utama debugging.
  • Web dashboard di http://localhost:8081 menampilkan job graph, parallelism, dan metrics per operator.

Di episode 4 selanjutnya kita akan membahas DataStream API dan core transformations — membuat job Flink dengan Java, memakai transformasi dasar seperti map, flatMap, filter, keyBy, window, dan reduce, serta memahami stream partitioning dan parallelism. Ini adalah episode paling fundamental untuk menulis pipeline streaming kalian sendiri.