Penentuan ukuran cluster

Secara default, Cloud Data Fusion menggunakan Autoscale sebagai profil komputasi. Mengestimasi jumlah cluster worker (node) terbaik untuk workload sulit dilakukan, dan ukuran cluster tunggal untuk seluruh pipeline sering kali tidak ideal. Penskalaan Otomatis Managed Service untuk Apache Spark menyediakan mekanisme untuk mengotomatiskan pengelolaan resource cluster serta memungkinkan penskalaan otomatis worker VM cluster. Untuk mengetahui informasi selengkapnya, lihat Penskalaan otomatis.

Di halaman Compute config, tempat Anda dapat melihat daftar profil, ada kolom Total core, yang memiliki v CPU maksimum yang dapat diskalakan oleh profil, seperti Up to 84.

Jika ingin menggunakan profil Compute Managed Service for Apache Spark , Anda dapat mengelola ukuran cluster berdasarkan ukuran pipeline.

Node master

Node master menggunakan resource yang sebanding dengan jumlah pipeline atau aplikasi tambahan yang berjalan di cluster. Jika Anda menjalankan pipeline di cluster sementara, gunakan 2 CPU dan memori 8 GB untuk node master. Jika Anda menggunakan cluster persisten, Anda mungkin memerlukan node master yang lebih besar untuk mengikuti alur kerja. Untuk memahami apakah Anda memerlukan node master yang lebih besar, Anda dapat memantau penggunaan memori dan CPU di node. Sebaiknya sesuaikan ukuran node pekerja Anda dengan minimal 2  CPU dan memori 8  GB. Jika Anda telah mengonfigurasi pipeline untuk menggunakan jumlah memori yang lebih besar, Anda harus menggunakan worker yang lebih besar.

Untuk meminimalkan waktu eksekusi, pastikan cluster Anda memiliki cukup node untuk memungkinkan pemrosesan paralel sebanyak mungkin.

Pekerja

Bagian berikut menjelaskan aspek penentuan ukuran node pekerja.

CPU dan Memori

Sebaiknya sesuaikan ukuran worker node Anda dengan minimal 2 CPU dan memori 8 GB. Jika Anda mengonfigurasi pipeline untuk menggunakan jumlah memori yang lebih besar, gunakan pekerja yang lebih besar. Misalnya, dengan node pekerja 4 CPU 15 GB, setiap pekerja akan memiliki 4 CPU dan 12 GB yang tersedia untuk menjalankan container YARN. Jika pipeline Anda dikonfigurasi untuk menjalankan 1 CPU, 8 GB executor, YARN tidak dapat menjalankan lebih dari satu container per node pekerja. Setiap node pekerja akan memiliki 3 CPU dan 4 GB tambahan yang terbuang karena tidak dapat digunakan untuk menjalankan apa pun. Untuk memaksimalkan pemanfaatan resource di cluster, Anda harus memastikan memori dan CPU YARN adalah kelipatan yang tepat dari jumlah yang diperlukan per executor Spark. Anda dapat memeriksa jumlah memori yang telah dicadangkan setiap pekerja untuk YARN dengan memeriksa properti yarn.nodemanager.resource.memory-mb di YARN.

Jika Anda menggunakan Managed Service for Apache Spark, memori yang tersedia untuk container YARN akan sekitar 75% dari memori VM. Ukuran minimum container YARN juga disesuaikan bergantung pada ukuran VM pekerja. Beberapa ukuran worker umum dan setelan YARN yang sesuai diberikan dalam tabel berikut.

CPU pekerja Memori pekerja (GB) Memori node YARN (GB) Memori alokasi minimum YARN (MB)
1 4 3 256
2 8 6 512
4 16 12 1024
8 32 24 1024
16 64 51 1024

Perlu diingat bahwa Spark meminta lebih banyak memori daripada memori eksekutor yang ditetapkan untuk pipeline, dan YARN membulatkan jumlah yang diminta tersebut. Misalnya, Anda telah menyetel memori eksekutor ke 2048 MB, dan belum memberikan nilai untuk spark.yarn.executor.memoryOverhead, yang berarti nilai default 384 MB digunakan. Artinya, Spark meminta 2048 MB + 384 MB untuk setiap eksekutor, yang dibulatkan YARN ke kelipatan persis alokasi minimum YARN. Saat berjalan di node pekerja 8 GB, karena alokasi minimum YARN adalah 512 MB, maka akan dibulatkan menjadi 2,5 GB. Artinya, setiap pekerja dapat menjalankan dua penampung, menggunakan semua CPU yang tersedia, tetapi menyisakan memori YARN 1 GB (6 GB - 2,5 GB - 2,5 GB) yang tidak digunakan. Artinya, worker node dapat berukuran sedikit lebih kecil, atau eksekutor dapat diberi sedikit lebih banyak memori. Saat berjalan di node pekerja 16 GB, 2048 MB + 1024 MB dibulatkan menjadi 3 GB karena alokasi minimum YARN adalah 1024 MB. Artinya, setiap node pekerja dapat menjalankan empat container, dengan semua CPU dan memori YARN sedang digunakan.

Untuk membantu memberikan konteks, tabel berikut menunjukkan ukuran pekerja yang direkomendasikan untuk beberapa ukuran eksekutor umum.

CPU  Executor Memori Eksekutor (MB) CPU  pekerja Memori Pekerja ( GB)
1 2048 4 15
1 3072 4 21
1 4096 4 26
2 8192 4 26

Misalnya, node pekerja 26 GB diterjemahkan menjadi memori 20 GB yang dapat digunakan untuk menjalankan container YARN. Dengan memori eksekutor yang ditetapkan ke 4 GB, 1 GB ditambahkan sebagai overhead, yang berarti 5 GB penampung YARN untuk setiap eksekutor. Artinya, pekerja dapat menjalankan empat penampung tanpa sisa resource tambahan. Anda juga dapat memperbanyak ukuran pekerja. Misalnya, jika memori eksekutor ditetapkan ke 4096 GB, pekerja dengan 8 CPU dan memori 52 GB juga akan berfungsi dengan baik. VM Compute Engine membatasi jumlah memori yang dapat dimiliki VM berdasarkan jumlah core. Misalnya, VM dengan 4 core harus memiliki memori minimal 7,25 GB dan memori maksimal 26 GB. Artinya, eksekutor yang disetel untuk menggunakan 1 CPU dan memori 8 GB menggunakan 2 CPU dan memori 26 GB di VM. Jika eksekutor dikonfigurasi untuk menggunakan 2 CPU dan 8 GB memori, semua CPU akan digunakan.

Disk

Disk penting untuk beberapa pipeline, tetapi tidak untuk semuanya. Jika pipeline Anda tidak berisi pengacakan, disk hanya akan digunakan saat Spark kehabisan memori dan perlu menumpahkan data ke disk. Untuk jenis pipeline ini, ukuran dan jenis disk umumnya tidak akan berdampak besar pada performa Anda. Jika pipeline Anda mengacak banyak data, performa disk akan menjadi penting. Jika Anda menggunakan Managed Service for Apache Spark, sebaiknya gunakan ukuran disk minimal 1 TB, karena performa disk meningkat seiring dengan ukuran disk. Untuk mengetahui informasi tentang performa disk, lihat Mengonfigurasi disk untuk memenuhi persyaratan performa.

Jumlah pekerja

Untuk meminimalkan waktu eksekusi, Anda harus memastikan bahwa cluster Anda cukup besar sehingga dapat menjalankan sebanyak mungkin secara paralel. Misalnya, jika sumber pipeline Anda membaca data menggunakan 100 pemisahan, Anda harus memastikan cluster cukup besar untuk menjalankan 100 eksekutor sekaligus.

Cara termudah untuk mengetahui apakah cluster Anda terlalu kecil adalah dengan melihat memori yang tertunda YARN dari waktu ke waktu. Jika Anda menggunakan Managed Service for Apache Spark, grafik dapat ditemukan di halaman detail cluster.

Jika memori tertunda tinggi dalam jangka waktu yang lama, Anda dapat meningkatkan jumlah pekerja untuk menambahkan kapasitas ekstra sebanyak itu ke cluster Anda. Dalam contoh sebelumnya, ukuran cluster harus ditingkatkan sekitar 28 GB untuk memastikan tingkat paralelisme maksimum tercapai.

Mode Fleksibilitas yang Ditingkatkan (EFM)

EFM memungkinkan Anda menentukan bahwa hanya node worker primer yang terlibat saat mengacak data. Karena pekerja sekunder tidak lagi bertanggung jawab atas data shuffle perantara, saat dihapus dari cluster, tugas Spark tidak akan mengalami penundaan atau error. Karena pekerja primer tidak pernah diturunkan skalanya, cluster diturunkan skalanya dengan lebih stabil dan efisien. Jika Anda menjalankan pipeline dengan pengacakan di cluster statis, sebaiknya gunakan EFM.

Untuk mengetahui informasi selengkapnya tentang EFM, lihat Mode fleksibilitas yang ditingkatkan untuk Managed Service for Apache Spark.