Apache Spark adalah sebuah kerangka kerja pemrosesan paralel sumber terbuka untuk menjalankan aplikasi analitik data skala besar pada komputer yang dikelompokkan dalam kluster. Spark dapat menangani analitik dan pemrosesan data baik dalam mode batch maupun real-time.
Spark menjadi proyek tingkat atas dari Apache Software Foundation pada Februari 2014, dan versi 1.0 Apache Spark dirilis pada Mei 2014. Versi Spark 2.0 dirilis pada Juli 2016.
Teknologi ini awalnya dirancang pada tahun 2009 oleh para peneliti di University of California, Berkeley, sebagai cara untuk mempercepat pekerjaan pemrosesan dalam sistem Hadoop.
Spark Core, inti dari proyek ini yang menyediakan fungsi transmisi tugas terdistribusi, penjadwalan, dan I/O, memberikan para pemrogram alternatif yang lebih cepat dan fleksibel dibandingkan dengan MapReduce, kerangka kerja perangkat lunak yang digunakan oleh versi awal Hadoop. Pengembang Spark mengatakan bahwa Spark dapat menjalankan pekerjaan 100 kali lebih cepat dibandingkan MapReduce ketika diproses di memori, dan 10 kali lebih cepat di disk.
Cara Kerja Apache Spark
Apache Spark dapat memproses data dari berbagai repositori data, termasuk Hadoop Distributed File System (HDFS), basis data NoSQL, dan penyimpanan data relasional seperti Apache Hive. Spark mendukung pemrosesan di memori untuk meningkatkan performa aplikasi analitik big data, tetapi juga dapat melakukan pemrosesan berbasis disk konvensional jika kumpulan data terlalu besar untuk dimuat ke memori sistem yang tersedia.
Mesin inti Spark menggunakan set data terdistribusi yang tahan terhadap kesalahan, atau RDD, sebagai tipe data dasarnya. RDD dirancang untuk menyembunyikan sebagian besar kompleksitas komputasi dari pengguna. RDD mengagregasi data dan membaginya di seluruh kluster server, di mana data ini dapat dihitung dan dipindahkan ke penyimpanan data lain atau dijalankan melalui model analitik. Pengguna tidak perlu mendefinisikan di mana file tertentu dikirim atau sumber daya komputasi apa yang digunakan untuk menyimpan atau mengambil file.
Selain itu, Spark dapat menangani lebih dari sekadar aplikasi pemrosesan batch yang menjadi batasan MapReduce.
Pustaka Spark
Mesin inti Spark sebagian berfungsi sebagai lapisan antarmuka pemrograman aplikasi (API) dan mendukung serangkaian alat terkait untuk mengelola dan menganalisis data. Selain mesin pemrosesan inti Spark, lingkungan API Apache Spark dikemas dengan beberapa pustaka kode yang digunakan dalam aplikasi analitik data. Pustaka ini meliputi:
- Spark SQL — Salah satu pustaka yang paling sering digunakan, Spark SQL memungkinkan pengguna untuk melakukan kueri data yang disimpan dalam berbagai aplikasi menggunakan bahasa SQL yang umum.
- Spark Streaming — Pustaka ini memungkinkan pengguna membangun aplikasi yang menganalisis dan menyajikan data secara real-time.
- MLlib — Sebuah pustaka pembelajaran mesin yang memungkinkan pengguna menerapkan operasi statistik lanjutan ke data di kluster Spark mereka dan membangun aplikasi berdasarkan analisis ini.
- GraphX — Sebuah pustaka algoritma bawaan untuk komputasi paralel berbasis grafik.
Bahasa Pemrograman Spark
Spark ditulis dalam Scala, yang dianggap sebagai bahasa utama untuk berinteraksi dengan mesin inti Spark. Secara default, Spark juga menyediakan konektor API untuk menggunakan Java dan Python. Java tidak dianggap sebagai bahasa yang optimal untuk rekayasa data atau data science, sehingga banyak pengguna mengandalkan Python, yang lebih sederhana dan lebih diarahkan pada analisis data.
Ada juga paket R programming yang dapat diunduh dan dijalankan di Spark. Ini memungkinkan pengguna menjalankan bahasa ilmu data desktop populer pada kumpulan data terdistribusi yang lebih besar di Spark dan menggunakannya untuk membangun aplikasi yang memanfaatkan algoritma pembelajaran mesin.
Penggunaan Apache Spark
Beragam pustaka Spark dan kemampuannya untuk menghitung data dari berbagai jenis penyimpanan data membuat Spark dapat diterapkan pada berbagai masalah di berbagai industri. Perusahaan periklanan digital menggunakannya untuk memelihara basis data aktivitas web dan merancang kampanye yang disesuaikan untuk konsumen tertentu. Perusahaan keuangan menggunakannya untuk mengambil data keuangan dan menjalankan model untuk membimbing aktivitas investasi. Perusahaan barang konsumsi menggunakannya untuk mengagregasi data pelanggan dan memprediksi tren untuk membimbing keputusan inventaris dan menemukan peluang pasar baru.
Perusahaan besar yang bekerja dengan aplikasi big data menggunakan Spark karena kecepatannya dan kemampuannya untuk mengintegrasikan berbagai jenis basis data serta menjalankan berbagai jenis aplikasi analitik. Hingga tulisan ini dibuat, Spark adalah komunitas sumber terbuka terbesar di bidang big data, dengan lebih dari 1.000 kontributor dari lebih dari 250 organisasi.