Apa itu Apache Spark?

Apache Spark adalah sistem pemrosesan terdistribusi sumber terbuka yang digunakan untuk beban kerja big data. Sistem ini memanfaatkan caching dalam memori dan eksekusi kueri yang dioptimalkan untuk kueri analitik cepat terhadap data dengan segala ukuran. Sistem ini menyediakan API pengembangan dalam Java, Scala, Python, dan R, serta mendukung penggunaan kembali kode di banyak beban kerja, yaitu pemrosesan batch, kueri interaktif, analitik waktu nyata, machine learning, dan pemrosesan grafik. Anda akan menemukan penggunaannya oleh organisasi dari industri apa pun, termasuk di FINRA, Yelp, Zillow, DataXu, Urban Institute, dan CrowdStrike.

Bagaimana sejarah Apache Spark?

Apache Spark dimulai pada tahun 2009 sebagai sebuah proyek penelitian di AMPLab UC Berkley, sebuah kolaborasi yang melibatkan mahasiswa, peneliti, dan fakultas, yang berfokus pada domain aplikasi yang memerlukan banyak data. Tujuan Spark adalah membuat kerangka kerja baru, yang dioptimalkan untuk pemrosesan iteratif cepat seperti machine learning, dan analisis data interaktif, sambil mempertahankan skalabilitas serta toleransi kesalahan Hadoop MapReduce. Makalah pertama berjudul, “Spark: Cluster Computing with Working Sets” diterbitkan pada Juni 2010, dan Spark merupakan sumber terbuka di bawah lisensi BSD. Pada bulan Juni 2013, Spark memasuki status inkubasi di Apache Software Foundation (ASF) dan ditetapkan sebagai proyek Tingkat Atas Apache pada Februari 2014. Spark dapat berjalan secara mandiri di Apache Mesos, atau paling sering di Apache Hadoop.

Bagaimana cara kerja Apache Spark?

Hadoop MapReduce adalah model pemrograman untuk memproses kumpulan big data dengan algoritma paralel dan terdistribusi. Developer dapat menulis operator paralel secara besar-besaran, tanpa harus khawatir tentang distribusi pekerjaan dan toleransi kesalahan. Namun, tantangan bagi MapReduce adalah proses multilangkah berurutan yang diperlukan untuk menjalankan tugas. Di setiap langkahnya, MapReduce membaca data dari klaster, melakukan operasi, dan menuliskan hasilnya kembali ke HDFS. Karena setiap langkah memerlukan pembacaan dan penulisan disk, tugas MapReduce menjadi lebih lambat karena latensi I/O disk.

Spark dibuat untuk mengatasi keterbatasan MapReduce dengan melakukan pemrosesan dalam memori, yang mengurangi jumlah langkah dalam suatu tugas, dan dengan menggunakan kembali data di banyak operasi paralel. Spark hanya memerlukan satu langkah, yaitu data dibaca ke dalam memori, operasi dilakukan, dan hasilnya ditulis kembali—menghasilkan eksekusi yang jauh lebih cepat. Spark juga menggunakan kembali data dengan menggunakan cache dalam memori untuk mempercepat algoritma machine learning yang berulang kali memanggil suatu fungsi pada set data yang sama. Penggunaan kembali data dilakukan melalui pembuatan DataFrames, sebuah abstraksi pada Set Data Terdistribusi Tangguh (RDD), yang merupakan kumpulan objek yang di-cache dalam memori, dan digunakan kembali dalam banyak operasi Spark. Hal ini menurunkan latensi secara drastis sehingga Spark menjadi beberapa kali lebih cepat daripada MapReduce, terutama saat melakukan machine learning dan analitik interaktif.

Perbedaan utama: Apache Spark vs. Apache Hadoop

Di luar perbedaan dalam desain Spark dan Hadoop MapReduce, banyak organisasi menganggap kerangka kerja big data ini saling melengkapi, sehingga mereka menggunakannya bersama-sama untuk memecahkan tantangan bisnis yang lebih banyak.

Hadoop adalah kerangka kerja sumber terbuka yang memiliki Hadoop Distributed File System (HDFS) sebagai penyimpanan, YARN sebagai cara pengelolaan sumber daya komputasi yang digunakan oleh berbagai aplikasi, dan implementasi model pemrograman MapReduce sebagai mesin eksekusi. Mesin eksekusi lain yang juga di-deploy dalam implementasi khas Hadoop antara lain Spark, Tez, dan Presto.

Spark adalah kerangka kerja sumber terbuka yang berfokus pada kueri interaktif, machine learning, dan beban kerja waktu nyata. Spark tidak memiliki sistem penyimpanan sendiri, tetapi menjalankan analitik pada sistem penyimpanan lain seperti HDFS, atau penyimpanan populer lainnya seperti Amazon Redshift, Amazon S3, Couchbase, Cassandra, dan lainnya. Spark di Hadoop memanfaatkan YARN untuk berbagi klaster dan set data umum seperti mesin Hadoop lainnya, sehingga dapat memastikan tingkat layanan dan respons yang konsisten.

Apa saja manfaat dari Apache Spark?

Ada banyak manfaat Apache Spark yang menjadikannya salah satu proyek paling aktif di ekosistem Hadoop. Hal ini mencakup:

Cepat

Melalui caching dalam memori dan eksekusi kueri yang dioptimalkan, Spark dapat menjalankan kueri analitik cepat pada data dengan ukuran berapa pun.

Ramah pengembang

Apache Spark mendukung Java, Scala, R, dan Python, sehingga Anda dapat membangun aplikasi dalam berbagai bahasa. API ini memudahkan developer Anda, karena API tersebut menyembunyikan kompleksitas pemrosesan terdistribusi di balik operator tingkat tinggi sederhana yang secara signifikan mengurangi jumlah kode yang diperlukan.

Banyak beban kerja

Apache Spark hadir dengan kemampuan untuk menjalankan banyak beban kerja, termasuk kueri interaktif, analitik waktu nyata, machine learning, dan pemrosesan grafik. Satu aplikasi dapat menggabungkan berbagai beban kerja dengan lancar.

Apa saja Beban Kerja Apache Spark?

Kerangka kerja Spark meliputi:

  • Spark Core sebagai fondasi platform
  • Spark SQL untuk kueri interaktif
  • Spark Streaming untuk analitik waktu nyata
  • Spark MLlib untuk machine learning
  • Spark GraphX untuk pemrosesan grafik

Spark Core

Spark Core adalah fondasi platform. Spark Core bertanggung jawab untuk manajemen memori, pemulihan kesalahan, penjadwalan, pendistribusian & pemantauan pekerjaan, serta berinteraksi dengan sistem penyimpanan. Spark Core diekspos melalui antarmuka pemrograman aplikasi (API) yang dibangun untuk Java, Scala, Python, dan R. API ini menyembunyikan kompleksitas pemrosesan terdistribusi di balik operator tingkat tinggi yang sederhana.

MLlib

Machine Learning

Spark mencakup MLlib, sebuah pustaka algoritma untuk menjalankan machine learning pada data dalam skala besar. Model Machine Learning dapat dilatih oleh ilmuwan data dengan R atau Python pada sumber data Hadoop apa pun, yang disimpan menggunakan MLlib, dan diimpor ke pipeline berbasis Java atau Scala. Spark didesain untuk komputasi yang cepat dan interaktif yang berjalan di dalam memori, sehingga machine learning dapat berjalan dengan cepat. Algoritma ini mencakup kemampuan untuk melakukan klasifikasi, regresi, pengelompokan, pemfilteran kolaboratif, dan penambangan pola.

Spark Streaming

Waktu nyata

Spark Streaming adalah solusi waktu nyata yang memanfaatkan kemampuan penjadwalan cepat Spark Core untuk melakukan analitik streaming. Spark Streaming menyerap data dalam batch mini, dan memungkinkan analitik pada data tersebut dengan kode aplikasi yang sama dengan yang ditulis untuk analitik batch. Hal ini meningkatkan produktivitas developer, karena mereka dapat menggunakan kode yang sama untuk pemrosesan batch, dan untuk aplikasi streaming waktu nyata. Spark Streaming mendukung data dari Twitter, Kafka, Flume, HDFS, dan ZeroMQ, serta banyak lagi yang dapat ditemukan dari ekosistem Spark Packages.

Spark SQL

Kueri Interaktif

Spark SQL adalah mesin kueri terdistribusi yang menyediakan kueri interaktif dengan latensi rendah hingga 100x lebih cepat daripada MapReduce. Mesin ini menyertakan pengoptimal berbasis biaya, penyimpanan kolum, dan pembuatan kode untuk kueri cepat, sambil menskalakan ke ribuan simpul. Analis bisnis dapat menggunakan SQL standar atau Hive Query Language untuk mengueri data. Developer dapat menggunakan API, yang tersedia dalam Scala, Java, Python, dan R. Spark SQL mendukung berbagai sumber data siap pakai termasuk JDBC, ODBC, JSON, HDFS, Hive, ORC, dan Parquet. Penyimpanan populer lainnya, seperti Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch, dan masih banyak lagi, dapat Anda temukan di ekosistemPaket Spark.

GraphX

Pemrosesan Grafik

Spark GraphX adalah kerangka kerja pemrosesan grafik terdistribusi yang dibangun di atas Spark. GraphX menyediakan ETL, analisis eksplorasi, dan komputasi grafik iteratif agar pengguna dapat membangun secara interaktif, dan mentransformasi struktur data grafik dalam skala besar. GraphX hadir dengan API yang sangat fleksibel dan pilihan algoritma Grafik terdistribusi.

Apa saja kasus penggunaan Apache Spark?

Spark adalah sistem pemrosesan terdistribusi tujuan umum yang digunakan untuk beban kerja big data. Spark telah di-deploy di setiap jenis kasus penggunaan big data untuk mendeteksi pola dan memberikan wawasan waktu nyata. Contoh kasus penggunaan meliputi:

Layanan Keuangan

Spark digunakan dalam perbankan untuk memprediksi churn pelanggan dan merekomendasikan produk keuangan baru. Dalam perbankan investasi, Spark digunakan untuk menganalisis harga saham guna memprediksi tren mendatang.

Pemeliharaan kesehatan

Spark digunakan untuk membangun perawatan pasien yang komprehensif, dengan menyediakan data bagi petugas kesehatan garis depan untuk setiap interaksi pasien. Spark juga dapat digunakan untuk memprediksi/merekomendasikan perawatan pasien.

Manufaktur

Spark digunakan untuk menghilangkan waktu henti peralatan yang terhubung ke internet, dengan merekomendasikan waktu untuk melakukan pemeliharaan preventif.

Ritel

Spark digunakan untuk menarik dan mempertahankan pelanggan melalui layanan serta penawaran yang dipersonalisasi.

Bagaimana deployment Apache Spark di cloud bekerja?

Spark adalah beban kerja yang ideal di cloud, karena cloud menyediakan performa, skalabilitas, keandalan, ketersediaan, dan skala ekonomi masif. Penelitian ESG menunjukkan bahwa 43% responden mempertimbangkan cloud sebagai deployment primer mereka untuk Spark. Alasan terbanyak pelanggan menganggap cloud sebagai sebuah kelebihan untuk Spark adalah waktu deployment yang lebih cepat, ketersediaan yang lebih baik, pembaruan fitur/fungsionalitas yang lebih sering, elastisitas yang lebih baik, cakupan geografis yang lebih luas, dan biaya yang tergantung pada penggunaan aktual.

Apa saja penawaran AWS untuk Apache Spark?

Amazon EMR adalah tempat terbaik untuk melakukan deployment Apache Spark di cloud, karena menggabungkan integrasi dan ketelitian pengujian distribusi Hadoop & Spark komersial dengan skala, kesederhanaan, dan efektivitas biaya cloud. Amazon EMR memungkinkan Anda untuk meluncurkan klaster Spark dalam hitungan menit tanpa perlu menyediakan simpul, menyiapkan klaster, mengonfigurasi Spark, atau menyetel klaster. EMR memungkinkan Anda menyediakan satu, ratusan, atau ribuan instans komputasi dalam hitungan menit. Anda dapat menggunakan Penskalaan Otomatis agar EMR secara otomatis menaikkan skala klaster Spark Anda untuk memproses data dalam berbagai ukuran, dan turun kembali saat pekerjaan Anda selesai agar tidak perlu membayar kapasitas yang tidak digunakan. Anda dapat menurunkan tagihan Anda dengan berkomitmen untuk jangka waktu yang ditetapkan, dan menghemat hingga 75% menggunakan Instans Terpesan Amazon EC2, atau menjalankan klaster Anda pada kapasitas komputasi AWS cadangan dan menghemat hingga 90% menggunakan EC2 Spot.

Mulai Apache Spark di AWS dengan membuat akun sekarang juga.

Langkah Berikutnya di AWS

Lihat sumber daya terkait produk tambahan
Lihat penawaran gratis untuk layanan Analitik di cloud 
Daftar untuk akun gratis

Dapatkan akses secara instan ke AWS Tingkat Gratis.

Daftar 
Mulai membangun di konsol

Mulai membangun di Konsol Manajemen AWS.

Masuk