Pipeline memungkinkan Anda menentukan CPU dan memori yang akan diberikan kepada driver dan setiap eksekutor. Anda dapat mengonfigurasi resource di konfigurasi pipeline Cloud Data Fusion Studio. Untuk informasi selengkapnya, lihat Mengelola konfigurasi pipeline.
Halaman ini memberikan panduan tentang berapa banyak resource driver dan eksekutor yang dapat dikonfigurasi untuk kasus penggunaan Anda.
Pengemudi
Karena driver tidak melakukan banyak pekerjaan, default 1 CPU dan memori 2 GB sudah cukup untuk menjalankan sebagian besar pipeline. Anda mungkin perlu meningkatkan memori untuk pipeline yang berisi banyak tahapan atau skema besar. Seperti yang disebutkan dalam Pemrosesan paralel JOIN, jika pipeline melakukan penggabungan dalam memori, set data dalam memori juga harus sesuai dengan memori driver.
Eksekutor
Perhatikan panduan berikut tentang resource CPU dan memori.
CPU
Jumlah CPU yang ditetapkan untuk eksekutor menentukan jumlah tugas yang dapat dijalankan secara paralel. Setiap partisi data membutuhkan satu tugas untuk diproses. Pada umumnya, cara paling sederhana adalah menyetel jumlah CPU ke satu, dan berfokus pada penyesuaian memori.
Memori
Untuk sebagian besar pipeline, memori eksekutor sebesar 4 GB sudah cukup untuk menjalankan pipeline dengan sukses. Gabungan multi-terabyte yang sangat condong telah dilengkapi 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 ditujukan untuk penggunaan internal Spark, sedangkan bagian lainnya digunakan untuk eksekusi dan penyimpanan.
Secara default, bagian penyimpanan dan eksekusi berukuran sekitar 60% dari total
memori. Properti spark.memory.fraction configuration
Spark (default-nya adalah 0,6) mengontrol persentase ini. Jumlah ini berperforma baik untuk sebagian besar workload
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
(default-nya adalah 0,5) untuk mengontrol berapa persentase ruang yang direservasi untuk penyimpanan.
Ruang penyimpanan menyimpan data yang di-cache. Ruang eksekusi menyimpan data shuffle, gabung, urutkan, dan agregasi. Jika ada ruang ekstra di bagian eksekusi, Spark dapat menggunakannya untuk menyimpan data. Namun, data eksekusi tidak akan pernah menggunakan ruang penyimpanan.
Jika mengetahui bahwa pipeline Anda tidak menyimpan data apa pun dalam cache, Anda dapat mengurangi fraksi penyimpanan guna memberikan lebih banyak ruang untuk persyaratan eksekusi.
Hal yang perlu dipertimbangkan: Memori container YARN
Setelan memori eksekutor mengontrol jumlah memori heap yang diberikan kepada
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 cadangan YARN memori 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 container 2432 m. Selain itu, YARN membulatkan nomor permintaan hingga
beberapa yarn.scheduler.increment-allocation-mb
, yang secara default bernilai
yarn.scheduler.minimum-allocation-mb
. Jika disetel ke 512, YARN
akan membulatkan 2432 m hingga 2560 m. Jika nilai ditetapkan ke 1024, YARN akan membulatkan
2432 m ke 3072 m. Poin ini berguna untuk diingat saat menentukan ukuran
setiap node pekerja di cluster Anda.