5 Teknik Optimasi Spark yang Harus Diketahui Setiap Ilmuwan Data

Diterbitkan: 2020-06-12

Baik itu startup kecil atau perusahaan besar, data ada di mana-mana. Data ini dikumpulkan dari berbagai sumber, seperti catatan pelanggan, tagihan kantor, lembar biaya, dan database karyawan. Perusahaan mengumpulkan dan menganalisis potongan data ini untuk menentukan pola dan tren. Pola-pola ini membantu mereka dalam membuat keputusan penting untuk peningkatan bisnis.

Namun, analisis data dan pengurutan angka ini tidak mungkin hanya dilakukan melalui lembar excel. Di sinilah teknologi perangkat lunak pemrosesan data masuk. Salah satu kerangka kerja pemrosesan data tercepat dan banyak digunakan adalah Apache Spark. Teknik optimasi Spark digunakan untuk menyetel kinerjanya untuk memaksimalkannya.

Kita akan belajar tentang teknik sedikit. Mari kita membahas dasar-dasar kerangka perangkat lunak ini.

Daftar isi

Apa itu Apache Spark?

Apache Spark adalah kerangka kerja komputasi cluster open-source terkenal di dunia yang digunakan untuk memproses kumpulan data besar di perusahaan. Memproses kumpulan data besar ini dan mendistribusikannya di antara beberapa sistem menjadi mudah dengan Apache Spark. Ini menawarkan API sederhana yang memudahkan kehidupan programmer dan pengembang.

Spark menyediakan binding asli untuk bahasa pemrograman, seperti Python, R, Scala, dan Java. Ini mendukung pembelajaran mesin, pemrosesan grafik, dan database SQL . Karena manfaat luar biasa ini, Spark digunakan di bank, perusahaan teknologi, organisasi keuangan, departemen telekomunikasi, dan lembaga pemerintah. Untuk mempelajari lebih lanjut tentang apache spark, lihat kursus ilmu data kami dari universitas yang diakui.

Arsitektur Apache Spark

Arsitektur run-time Apache Spark terdiri dari komponen-komponen berikut:

Pengemudi percikan atau proses master

Ini mengubah program menjadi tugas dan kemudian menjadwalkannya untuk pelaksana (proses budak). Penjadwal tugas mendistribusikan tugas-tugas ini ke pelaksana.

Manajer klaster

Manajer cluster Spark bertanggung jawab untuk meluncurkan eksekutor dan driver. Ini menjadwalkan dan mengalokasikan sumber daya di beberapa mesin host untuk sebuah cluster.

pelaksana

Pelaksana, juga disebut proses budak, adalah entitas di mana tugas pekerjaan dieksekusi. Setelah diluncurkan, mereka berjalan hingga siklus hidup aplikasi Spark berakhir. Eksekusi pekerjaan Spark tidak berhenti jika pelaksana gagal.

Kumpulan Data Terdistribusi Tangguh (RDD)

Ini adalah kumpulan set data yang tidak dapat diubah dan didistribusikan melalui node dari cluster Spark. Khususnya, cluster adalah kumpulan sistem terdistribusi tempat Spark dapat diinstal. RDD dibagi menjadi beberapa partisi. Dan, mereka disebut tangguh karena mereka dapat memperbaiki masalah data jika terjadi kegagalan data.

Jenis RDD yang didukung oleh Spark adalah:

  • Kumpulan data Hadoop dibangun dari file di Sistem File Terdistribusi Hadoop
  • Koleksi paralel, yang dapat didasarkan pada koleksi Scala

DAG (Grafik Asiklik Berarah)

Spark membuat grafik segera setelah kode dimasukkan ke konsol Spark. Jika beberapa tindakan (instruksi untuk menjalankan operasi) dipicu, grafik ini dikirimkan ke DAGScheduler .

Grafik ini dapat dianggap sebagai urutan tindakan data. DAG terdiri dari vertex dan edge. Simpul mewakili RDD dan tepi mewakili komputasi yang akan dilakukan pada RDD tertentu. Disebut graf berarah karena tidak ada loop atau siklus di dalam graf tersebut.

Teknik Optimasi Percikan

Teknik optimasi Spark digunakan untuk memodifikasi pengaturan dan properti Spark untuk memastikan bahwa sumber daya digunakan dengan benar dan pekerjaan dijalankan dengan cepat. Semua ini pada akhirnya membantu dalam memproses data secara efisien.

Teknik optimasi Spark yang paling populer tercantum di bawah ini:

1. Serialisasi Data

Di sini, objek dalam memori diubah menjadi format lain yang dapat disimpan dalam file atau dikirim melalui jaringan. Ini meningkatkan kinerja aplikasi terdistribusi. Dua cara untuk membuat serial data adalah:

  • Jawa serialisasi – Kerangka kerja ObjectOutputStream digunakan untuk membuat serial objek. Java.io.Externalizable dapat digunakan untuk mengontrol kinerja serialisasi. Proses ini menawarkan ketekunan yang ringan.
  • Serialisasi Kyro – Spark menggunakan pustaka Kryo Serialization (v4) untuk membuat serial objek yang lebih cepat daripada serialisasi Java dan merupakan proses yang lebih ringkas. Untuk meningkatkan kinerja, kelas harus didaftarkan menggunakan metode registerKryoClasses.

2. Caching

Ini adalah teknik yang efisien yang digunakan ketika data dibutuhkan lebih sering. Cache() dan bertahan() adalah metode yang digunakan dalam teknik ini. Metode ini digunakan untuk menyimpan perhitungan RDD, DataSet, dan DataFrame. Namun, cache() menyimpannya di memori, dan persistent() menyimpannya di tingkat penyimpanan yang ditentukan pengguna.

Metode ini dapat membantu dalam mengurangi biaya dan menghemat waktu karena perhitungan berulang digunakan.

Baca: Dataframe di Apache PySpark: Tutorial Komprehensif

3. Penyesuaian Struktur Data

Kita dapat mengurangi konsumsi memori saat menggunakan Spark, dengan mengutak-atik fitur Java tertentu yang mungkin menambah overhead. Ini dimungkinkan dengan cara berikut:

  • Gunakan objek yang disebutkan atau ID numerik sebagai pengganti string untuk kunci.
  • Hindari menggunakan banyak objek dan struktur bersarang yang rumit.
  • Setel flag JVM ke xx:+UseCompressedOops jika ukuran memori kurang dari 32 GB.

4. Optimalisasi pengumpulan sampah

Untuk mengoptimalkan pengumpul sampah, G1 dan GC harus digunakan untuk menjalankan aplikasi Spark. Kolektor G1 mengelola tumpukan yang terus bertambah. Penyetelan GC sangat penting sesuai dengan log yang dihasilkan, untuk mengontrol perilaku aplikasi yang tidak terduga. Tetapi sebelum ini, Anda perlu memodifikasi dan mengoptimalkan logika dan kode program.

G1GC membantu mengurangi waktu eksekusi pekerjaan dengan mengoptimalkan waktu jeda antar proses.

5. Manajemen Memori

Memori yang digunakan untuk menyimpan komputasi, seperti joins, shuffles, sorting, dan aggregation, disebut execution memory. Memori penyimpanan digunakan untuk menyimpan dan menangani data yang disimpan dalam cluster. Kedua memori menggunakan wilayah terpadu M.

Ketika memori eksekusi tidak digunakan, memori penyimpanan dapat menggunakan ruang tersebut. Demikian pula, ketika memori penyimpanan tidak digunakan, memori eksekusi dapat memanfaatkan ruang tersebut. Ini adalah salah satu teknik optimasi Spark yang paling efisien .

Baca Juga: 6 Fitur Pengubah Game Apache Spark

Kesimpulan

Dari berbagai teknik optimasi Spark , kita dapat memahami bagaimana mereka membantu dalam mengurangi waktu pemrosesan dan memproses data lebih cepat. Pengembang dan profesional menerapkan teknik ini sesuai dengan aplikasi dan jumlah data yang bersangkutan.

Jika Anda ingin tahu tentang pengoptimalan percikan , ilmu data, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktis, bimbingan dengan industri pakar, tatap muka dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.

Apa itu teknik Optimasi Spark?

Apache Spark memudahkan perusahaan untuk memproses data dengan cepat dan menyelesaikan masalah data yang kompleks dengan mudah. Jelas bahwa selama pengembangan program apa pun, sangat penting untuk menjaga kinerjanya. Teknik pengoptimalan Spark membantu komputasi data dalam memori. Satu-satunya hal yang dapat menghambat perhitungan ini adalah memori, CPU, atau sumber daya lainnya.

Setiap teknik optimasi percikan digunakan untuk tujuan yang berbeda dan melakukan tindakan spesifik tertentu. Beberapa teknik optimasi percikan yang banyak digunakan adalah:

1. Serialisasi
2. Pemilihan API
3. Variabel lanjutan
4. Tembolok dan bertahan
5. Operasi ByKey
6. Pemilihan format file
7. Penyetelan pengumpulan sampah
8. Tingkat paralelisme

Kapan Anda tidak boleh mempertimbangkan untuk menggunakan Spark?

Apache Spark memiliki banyak kasus penggunaan, tetapi ada kebutuhan khusus tertentu di mana Anda memerlukan mesin data besar lainnya untuk memenuhi tujuan tersebut. Dalam kasus seperti itu, disarankan untuk menggunakan teknologi lain daripada menggunakan Spark. Di bawah ini adalah kasus penggunaan di mana Anda tidak boleh mempertimbangkan untuk menggunakan Spark:

1. Kapasitas komputasi rendah – Pemrosesan default pada Apache Spark berlangsung di memori cluster. Jika mesin virtual atau cluster Anda memiliki kapasitas komputasi yang kecil, Anda harus menggunakan alternatif lain seperti Apache Hadoop.
2. Penyerapan data dalam model publish-subscribe – Dalam hal ini, ada banyak sumber serta beberapa tujuan di mana jutaan data dipindahkan dalam waktu singkat. Di sini, Anda tidak boleh menggunakan Spark, dan sebagai gantinya, gunakan Apache Kafka.

Apakah Pandas lebih cepat dari Apache Spark?

Saat Anda membandingkan kecepatan komputasi Pandas DataFrame dan Spark DataFrame, Anda akan melihat bahwa kinerja Pandas DataFrame sedikit lebih baik untuk kumpulan data kecil. Di sisi lain, jika ukuran data bertambah, ternyata Spark DataFrame cukup mampu mengungguli Pandas DataFrame. Jadi, itu akan sangat tergantung pada jumlah data.