Pengelolaan fasilitas

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.