Optimasi penyimpanan data untuk Apache Spark

Artikel ini membahas cara mengoptimalkan manajemen memori kluster Apache Spark Anda untuk performa terbaik di Microsoft Azure HDInsight.

Gambaran Umum

Spark beroperasi dengan menempatkan data dalam memori. Jadi mengelola sumber daya memori adalah aspek kunci dari mengoptimalkan eksekusi pekerjaan Spark. Ada beberapa teknik yang dapat Anda terapkan untuk menggunakan memori kluster Anda secara efisien.

  • Pilih partisi data yang lebih kecil dan akun untuk ukuran, jenis, dan distribusi data dalam strategi partisi Anda.
  • Pertimbangkan Kryo data serialization yang lebih baru dan lebih efisien daripada serialisasi Java default.
  • Pilihlah penggunaan YARN, karena memisahkan spark-submit berdasarkan batch.
  • Pantau dan sesuaikan pengaturan konfigurasi Spark.

Untuk referensi Anda, struktur memori Spark dan beberapa parameter memori eksekutor utama ditampilkan pada gambar berikutnya.

Pertimbangan memori Spark

Jika Anda menggunakan APACHE Hadoop YARN, maka YARN mengontrol memori yang digunakan oleh semua kontainer pada setiap simpul Spark. Diagram berikut memperlihatkan objek kunci dan hubungannya.

YARN Spark Memory Management.

Untuk mengatasi pesan 'kehabisan memori', cobalah:

  • Tinjau Pengacakan Manajemen DAG. Kurangi dengan reduksi sisi peta, data sumber pra-partisi (atau bucketize), maksimalkan acak tunggal, dan kurangi jumlah data yang dikirim.
  • Pilihlah ReduceByKey dengan batas memori tetap hingga GroupByKey yang menyediakan agregasi, windowing, dan fungsi lainnya tetapi memiliki batas memori tidak terbatas ann.
  • Pilihlah TreeReduce, yang melakukan lebih banyak pekerjaan pada eksekutor atau partisi, daripada Reduce, yang melakukan semua pekerjaan pada driver.
  • Gunakan DataFrames daripada objek RDD tingkat bawah.
  • Buat ComplexTypes yang merangkum tindakan, seperti "Top N", berbagai agregasi, atau operasi windowing.

Untuk langkah-langkah pemecahan masalah tambahan, lihat Pengecualian OutOfMemoryError untuk Apache Spark di Microsoft Azure HDInsight.

Langkah berikutnya