Pipeline memungkinkan Anda menentukan CPU dan memori yang akan diberikan ke driver dan setiap eksekutor. Anda dapat mengonfigurasi resource dalam konfigurasi pipeline Cloud Data Fusion Studio. Untuk mengetahui informasi selengkapnya, lihat Mengelola konfigurasi pipeline.
Halaman ini memberikan panduan tentang jumlah resource driver dan eksekutor yang harus dikonfigurasi untuk kasus penggunaan Anda.
Driver
Karena driver tidak melakukan banyak pekerjaan, memori default 1 CPU dan 2 GB sudah cukup untuk menjalankan sebagian besar pipeline. Anda mungkin perlu meningkatkan memori untuk pipeline yang berisi banyak tahap atau skema besar. Seperti yang disebutkan dalam Pemrosesan paralel JOIN, jika pipeline melakukan join dalam memori, set data dalam memori juga harus sesuai dengan memori driver.
Eksekutor
Pertimbangkan panduan berikut tentang resource CPU dan memori.
CPU
Jumlah CPU yang ditetapkan ke eksekutor menentukan jumlah tugas yang dapat dijalankan eksekutor secara paralel. Setiap partisi data memerlukan satu tugas untuk diproses. Pada umumnya, cara yang paling mudah adalah menetapkan jumlah CPU ke satu, dan sebaiknya fokus pada penyesuaian memori.
Memori
Untuk sebagian besar pipeline, memori eksekutor sebesar 4 GB sudah cukup untuk berhasil menjalankan pipeline. Join multi-terabyte yang sangat miring telah selesai dengan memori eksekutor 4 GB. Anda dapat meningkatkan kecepatan eksekusi dengan meningkatkan jumlah memori, tetapi hal ini memerlukan pemahaman yang kuat tentang data dan pipeline Anda.
Spark membagi memori menjadi beberapa bagian. Satu bagian dicadangkan untuk penggunaan internal Spark, dan bagian lainnya untuk eksekusi dan penyimpanan.
Secara default, bagian penyimpanan dan eksekusi adalah sekitar 60% dari total
memori. Properti spark.memory.fraction configuration
Spark (defaultnya 0,6)
mengontrol persentase ini. Jumlah ini berperforma baik untuk sebagian besar beban kerja dan
biasanya tidak perlu disesuaikan.
Bagian penyimpanan dan eksekusi dibagi lagi menjadi ruang terpisah untuk
penyimpanan dan eksekusi. Secara default, ruang tersebut memiliki ukuran yang sama, tetapi Anda dapat
menyesuaikannya dengan menetapkan spark.memory.storageFraction
(defaultnya 0,5) untuk
mengontrol persentase ruang yang dicadangkan untuk penyimpanan.
Ruang penyimpanan menyimpan data dalam cache. Ruang eksekusi menyimpan data pengacakan, penggabungan, pengurutan, dan agregasi. Jika ada ruang tambahan di bagian eksekusi, Spark dapat menggunakan sebagian ruang tersebut untuk menyimpan data. Namun, data eksekusi tidak akan menggunakan ruang penyimpanan apa pun.
Jika mengetahui bahwa pipeline tidak menyimpan data apa pun dalam cache, Anda dapat mengurangi pecahan penyimpanan untuk memberikan lebih banyak ruang bagi persyaratan eksekusi.
Poin yang perlu dipertimbangkan: Memori penampung YARN
Setelan memori eksekutor mengontrol jumlah memori heap yang diberikan ke
eksekutor. Spark menambahkan jumlah memori tambahan untuk memori off-heap, yang
dikontrol oleh setelan spark.executor.memoryOverhead
, yang secara default ditetapkan ke
384 m. Artinya, jumlah memori yang dicadangkan YARN untuk setiap eksekutor
lebih tinggi dari jumlah yang ditetapkan dalam konfigurasi resource pipeline. Misalnya,
jika Anda menetapkan memori eksekutor ke 2048 m, Spark akan menambahkan 384 m ke angka tersebut dan meminta
YARN untuk penampung 2432 m. Selain itu, YARN membulatkan jumlah permintaan hingga
kelipatan yarn.scheduler.increment-allocation-mb
, yang secara default ditetapkan ke
nilai yarn.scheduler.minimum-allocation-mb
. Jika disetel ke 512, YARN
akan membulatkan 2432m hingga 2560m. Jika nilai ditetapkan ke 1024, YARN akan membulatkan
2432 m menjadi 3072 m. Hal ini penting untuk diingat saat menentukan ukuran
setiap node pekerja di cluster Anda.