Belajar Apache Spark - Instalasi & Menjalankan Spark
Episode 3 of 23

Belajar Apache Spark - Instalasi & Menjalankan Spark

Episode ini mempraktikkan cara menjalankan Apache Spark: instalasi standalone di local, masuk ke spark-shell dan pyspark, mengirim job dengan spark-submit dalam deployment mode client maupun cluster, serta membaca Spark UI untuk memantau eksekusi job.

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

Pendahuluan

Episode 2 memberi kalian peta arsitektur Spark. Sekarang saatnya menjalankan Spark secara nyata. Episode 3 ini berfokus pada praktik: instalasi standalone, berinteraksi lewat spark-shell dan pyspark, mengirim job dengan spark-submit, serta memantau eksekusi melalui Spark UI.

Kemampuan ini adalah gerbang menuju semua episode berikutnya. Setelah episode ini, kalian bisa menjalankan contoh kode apa pun di series ini dengan percaya diri dan memahami apa yang terjadi di belakang layar.

Instalasi Spark Standalone di Local

Men-download Binary Release

Cara paling cepat adalah mengunduh pre-built binary dari situs resmi Apache Spark. Untuk series ini kita memakai versi 4.0. Pilih paket yang sudah menyertakan Hadoop, lalu ekstrak:

Download dan ekstrak Spark
wget https://archive.apache.org/dist/spark/spark-4.0.0/spark-4.0.0-bin-hadoop3.tgz
tar -xzf spark-4.0.0-bin-hadoop3.tgz
sudo mv spark-4.0.0-bin-hadoop3 /opt/spark

Mengatur Environment Variable

Agar perintah Spark bisa dipanggil dari mana saja, atur SPARK_HOME dan PATH. Tambahkan ke ~/.bashrc:

Environment variable Spark
export SPARK_HOME=/opt/spark
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))

Setelah source ~/.bashrc, verifikasi dengan spark-shell --version. Spark juga menyediakan skrip untuk menjalankan cluster standalone: start-master.sh dan start-worker.sh dari direktori sbin. Skrip ini kita pakai di episode 14 untuk deployment.

Tip

Gunakan versi binary yang menyertakan Hadoop (bin-hadoop3) meskipun kalian tidak memakai HDFS, karena format-format penyimpanan dan ekosistem terkait sudah tersedia lebih lengkap.

Menjalankan Spark Shell dan PySpark

Spark Shell untuk Scala

spark-shell memberi lingkungan interaktif di Scala. Di dalamnya, variabel sc (SparkContext) dan spark (SparkSession) sudah tersedia secara otomatis:

Mode interaktif Scala
spark-shell --master local[*]
 
scala> val data = sc.parallelize(1 to 10)
scala> data.reduce(_ + _)

Perintah sc.parallelize(1 to 10) — maaf, sintaks di atas memakai form interaktif; detail transformasi akan kita bedah di episode 4. Yang penting: shell adalah tempat eksperimen tercepat karena tidak perlu mengompilasi program penuh.

PySpark untuk Python

Untuk kalian yang memilih Python, pyspark menyediakan antarmuka yang sama:

Masuk ke PySpark
pyspark --master local[4]

Setelah masuk, variabel spark sudah aktif. Coba:

PythonEksperimen pertama di PySpark
df = spark.range(100).filter("id % 2 == 0")
print(df.count())

Memakai --master local[4] memberi Spark 4 core sehingga kalian bisa melihat paralelisme nyata. Output 50 menunjukkan filter bekerja dengan benar.

Menjalankan Jupyter dengan PySpark

Untuk notebook, tambahkan dependency findspark atau cukup install pyspark di environment yang sama dengan Jupyter. Variabel spark bisa dibuat manual dengan SparkSession.builder seperti di episode 0 — pola yang paling portabel antar environment.

Spark Submit dan Deployment Mode

Dasar Spark Submit

Untuk menjalankan aplikasi Spark yang disimpan dalam file, gunakan spark-submit. Buat file hitung.py:

PythonAplikasi sederhana hitung.py
from pyspark.sql import SparkSession
 
spark = SparkSession.builder.appName("hitung").getOrCreate()
df = spark.range(10).filter("id >= 3")
print("Hasil:", df.count())
spark.stop()

Lalu kirim job:

Submit aplikasi
spark-submit --master local[2] hitung.py

Deployment Mode Client dan Cluster

Pada client mode, driver berjalan di mesin tempat spark-submit dijalankan — mudah untuk debugging karena log muncul di terminal. Pada cluster mode, driver berjalan di dalam cluster manager (misalnya di node worker), sehingga mesin pengirim bisa ditutup setelah submit.

Cluster mode dengan YARN
spark-submit --master yarn --deploy-mode cluster hitung.py

Aturan praktis: gunakan client mode saat development, cluster mode saat produksi agar driver tidak bergantung pada laptop atau CI runner.

Spark UI dan Monitoring

Membuka Spark UI

Saat aplikasi berjalan, Spark menyediakan Spark UI di port 4040 — kalian bisa membukanya di browser saat job aktif. UI menampilkan:

  • Jobs: daftar job dan statusnya.
  • Stages: breakdown setiap stage beserta durasi dan jumlah task.
  • Storage: data yang ter-cache dan ukurannya.
  • Executors: penggunaan memori dan CPU per executor.
Lihat Spark UI di browser
open http://localhost:4040

Memahami Kolom-Kolom Penting

Pada halaman Stages, perhatikan kolom seperti Duration, Shuffle Read/Write, dan Tasks. Jika salah satu stage memakan waktu jauh lebih lama dari yang lain, kemungkinan ada skew — sebagian task mengerjakan data terlalu berat. Jika Shuffle Read sangat besar, pertimbangkan strategi join yang lebih baik. Keduanya akan kita pelajari di episode 9.

Spark History Server

Spark UI hanya tersedia saat aplikasi berjalan. Untuk melihat riwayat aplikasi yang sudah selesai, aktifkan event logging dan jalankan History Server:

Aktifkan event logging dan history server
spark.eventLog.enabled=true
spark.eventLog.dir=file:/tmp/spark-events
Jalankan history server
/opt/spark/sbin/start-history-server.sh

Dengan History Server, kalian bisa meninjau ulang UI aplikasi yang sudah selesai — sangat berguna untuk debugging dan audit. Detail lengkap observability akan dibahas di episode 13.

Penutup

Episode 3 mempraktikkan fondasi operasional: kalian menginstal Spark standalone, bereksperimen di spark-shell dan pyspark, mengirim aplikasi dengan spark-submit dalam mode client dan cluster, serta membaca Spark UI dan History Server untuk memantau eksekusi.

Inti yang harus dibawa pulang:

  • Unduh pre-built binary dan atur SPARK_HOME serta PATH dengan benar.
  • spark-shell dan pyspark adalah playground cepat untuk eksperimen.
  • spark-submit memakai --deploy-mode client saat dev dan cluster saat produksi.
  • Spark UI di port 4040 adalah jendela utama untuk melihat jobs, stages, dan executors.
  • History Server memungkinkan inspeksi aplikasi yang sudah selesai.

Di episode 4 selanjutnya kita akan membahas RDD dan functional transformations — cara membuat RDD, operasi map, filter, flatMap, reduceByKey, groupByKey, konsep lazy evaluation dan lineage, serta kapan RDD masih relevan untuk low-level processing.