Memaksimalkan fleksibilitas dan efisiensi cluster dan tugas

Halaman ini memberikan praktik terbaik dan strategi penjadwalan untuk membantu Anda mendesain cluster Managed Service for Apache Spark yang tangguh yang memaksimalkan ketersediaan resource di seluruh region Google Cloud , mengurangi penundaan penyediaan, dan memanfaatkan pengoptimalan performa dan biaya.

Ringkasan ketersediaan resource

Menjalankan tugas di cluster Managed Service untuk Apache Spark yang kaku akan menciptakan titik tunggal kegagalan yang dapat menyebabkan gangguan tugas serta kegagalan cluster dan tugas akibat ketidaktersediaan yang terlokalisasi atau penundaan penyediaan.

Risiko ketidaktersediaan resource tinggi untuk cluster yang dikonfigurasi dengan salah satu antipola kaku berikut:

  • Penempatan zona tetap: Melakukan hardcoding satu zona menggunakan flag atau kolom zone, alih-alih mengizinkan AutoZone Managed Service untuk Apache Spark menempatkan cluster secara dinamis di zona yang optimal. Anti-pola ini mencegah pembuatan cluster menggunakan resource komputasi yang tersedia di zona yang berdekatan.
  • Satu jenis atau generasi mesin per peran node: Membatasi peran node ke satu generasi atau jenis mesin. Anti-pola ini mencegah cluster beralih ke alternatif.
  • Terlalu sedikit kelompok mesin pada peringkat prioritas tertinggi: Hanya mencantumkan satu atau dua kelompok mesin pada peringkat 0 kebijakan VM fleksibel, meskipun peringkat penggantian telah ditentukan. Anti-pola ini mempersempit kumpulan resource yang dapat diambil oleh Managed Service untuk Apache Spark terlebih dahulu, sehingga meningkatkan kemungkinan kembali ke peringkat yang lebih rendah atau penundaan penyediaan.
  • Penskalaan vertikal dengan VM besar yang lebih sedikit: Menskalakan cluster secara vertikal untuk mengandalkan sejumlah kecil bentuk VM besar. Anti-pola ini membatasi fleksibilitas penjadwalan.
  • Pembuatan cluster semua atau tidak sama sekali: Mengharuskan semua worker node disediakan secara bersamaan, bukan menggunakan pembuatan cluster parsial yang dipasangkan dengan penskalaan otomatis. Anti-pola ini menyebabkan pembuatan cluster gagal jika worker node tidak dapat dialokasikan karena ketidaktersediaan resource sementara.
  • Lonjakan penjadwalan puncak: Memicu pipeline batch besar selama jam penggunaan puncak, yang meningkatkan pertentangan regional.

Ketersediaan resource adalah praktik mendesain tugas agar fleksibel terhadap hardware, multi-zona, dan skalabel. Dengan memisahkan cluster dari konfigurasi yang kaku dan mengaktifkan penggantian kelompok multi-mesin, Anda dapat meningkatkan rasio keberhasilan pembuatan, meminimalkan latensi startup, dan mencapai SLA secara konsisten.

Rekomendasi ketersediaan resource

Terapkan pengoptimalan berikut untuk meningkatkan ketersediaan resource dan stabilitas tugas:

Menggunakan VM fleksibel

Fitur Flexible VM memungkinkan Anda menentukan daftar jenis VM yang diberi peringkat untuk node master, worker primer, dan worker sekunder. Hal ini meningkatkan rasio keberhasilan pembuatan dengan mengevaluasi jenis VM yang tercantum dan memilih zona dengan kapasitas yang tersedia secara otomatis.

Rekomendasi: Gunakan VM fleksibel dengan penggantian disk, yang memungkinkan Anda menentukan jenis disk yang berbeda, seperti hyperdisk dan persistent disk, untuk berbagai kelompok mesin kandidat dalam kebijakan cluster yang sama. Anda juga dapat memadukan kelompok mesin Gen2 dan Gen4 dalam satu kebijakan untuk menskalakan tugas di seluruh kumpulan yang lebih luas dan mengabaikan batas kapasitas.

Tentukan setidaknya tiga kelompok mesin yang berbeda di peringkat 0. Managed Service untuk Apache Spark mengambil dari daftar prioritas tertinggi (peringkat 0) terlebih dahulu, sehingga peringkat 0 yang luas memberi pembuatan cluster kumpulan resource kandidat terbesar sebelum beralih ke peringkat yang lebih rendah. Menggabungkan kelompok Gen4 dan Gen2 pada peringkat 0 adalah cara paling efektif untuk memperluas kumpulan ini.

Untuk workload tujuan umum, misalnya, tugas yang saat ini berjalan di mesin N2 atau N2D, gunakan peringkat berikut:

  • Peringkat 0: N4, N4D (dengan hyperdisk balanced), N2, N2D
  • Peringkat 1: C4, C4D (dengan hyperdisk balanced), C2D. SSD lokal dapat digunakan dengan C4 dan C4D, tetapi biasanya 8 atau 16 core hanya mendukung 1–2 SSD lokal.
  • Peringkat 2: E2 (performa lebih rendah; gunakan hanya jika diperlukan)

Misalnya, untuk tugas yang menggunakan n2d-standard-16, peringkatnya adalah:

  • Peringkat 0: n4-standard-16, n4d-standard-16, n2-standard-16, n2d-standard-16
  • Peringkat 1: c4-standard-16, c4d-standard-16, c2d-standard-16
  • Peringkat 2: e2-standard-16

Karena N4 dan N4D memerlukan Hyperdisk, sedangkan N2 dan N2D menggunakan persistent disk, tentukan peringkat 0 sebagai dua pilihan instance yang memiliki peringkat yang sama, tetapi menggunakan nilai diskConfig yang berbeda. Misalnya, flag gcloud dataproc clusters create berikut menentukan kebijakan worker utama untuk contoh sebelumnya:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --num-workers=NUM_WORKERS \
    --worker-instance-selection='{"machineTypes":["n4-standard-16","n4d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["n2-standard-16","n2d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["c4-standard-16","c4d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["c2d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["e2-standard-16"],"rank":2,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}'

Saat menggunakan VM Fleksibel, pertimbangkan faktor-faktor berikut:

  • Dukungan jenis disk campuran: Jenis mesin Gen3 dan Gen4 hanya mendukung jenis disk Hyperdisk dan tidak mendukung jenis Persistent Disk. Saat menggabungkan Gen2 dan Gen4, tentukan diskConfig untuk setiap pilihan instance di instanceFlexibilityPolicy. Untuk mengetahui informasi selengkapnya, lihat Penggantian disk.

  • Kuota resource: Saat Anda menentukan kebijakan VM Fleksibel dengan jenis penggantian, Compute Engine akan memeriksa kuota untuk semua jenis kandidat dan disk di region tersebut. Pastikan project Anda memiliki kuota komputasi dan disk yang memadai yang dialokasikan untuk semua item yang dikonfigurasi.

  • Diskon Compute Engine: Manfaatkan diskon abonemen (DA) fleksibel untuk menerapkan penghematan berbasis pengeluaran di beberapa kelompok dan region VM.

  • Harga: Gunakan Kalkulator HargaGoogle Cloud untuk membandingkan biaya setiap peringkat dalam kebijakan Anda.

Untuk template konfigurasi dan contoh deployment, lihat:

Menggunakan penempatan zona otomatis

Gunakan penempatan AutoZone agar Managed Service untuk Apache Spark memilih zona terbaik untuk menyediakan resource. Jika Anda menggunakan jaringan Virtual Private Cloud (VPC) kustom, pastikan subnet memiliki alamat IP yang memadai di semua zona regional.

Menggunakan bentuk mesin yang lebih kecil

Desain tugas untuk diskalakan secara horizontal di seluruh jenis mesin yang lebih kecil (4, 8, atau 16 core), bukan diskalakan secara vertikal dengan VM yang lebih besar. Ukuran VM yang lebih kecil memiliki ketersediaan yang lebih tinggi di seluruh zona, sehingga membantu mencegah penundaan pembuatan.

  • Tinjau dan rancang ulang tugas yang menggunakan jenis mesin besar untuk node driver.
  • Tinjau tugas yang hanya menjalankan node driver tanpa worker node (cluster node tunggal). Tugas yang berjalan di cluster node tunggal tidak dapat meningkatkan skala secara dinamis dan mengikat eksekusi ke satu host fisik.

Menggunakan penskalaan otomatis cluster

Gunakan penskalaan otomatis cluster dengan jumlah instance maksimum yang memadai untuk mengelola kapasitas tugas dengan variabilitas resource (lonjakan).

Menggunakan pembuatan cluster parsial dengan penskalaan otomatis

Gunakan pembuatan cluster parsial, yang memungkinkan Anda menentukan jumlah minimum worker utama, dengan penskalaan otomatis. Jika cluster dimulai dengan worker yang lebih sedikit daripada yang diminta, penskalaan otomatis dapat menambahkan lebih banyak worker secara dinamis setelah resource tersedia.

Menjadwalkan tugas di luar jam sibuk

Jadwalkan tugas di luar jam sibuk, seperti tengah hari dan akhir pekan. Jadwalkan pada waktu non-standar, misalnya, pada 10:07, bukan 10:00, untuk menghindari lonjakan penjadwalan.

Langkah berikutnya