Setelah membuat cluster Managed Service untuk Apache Spark, Anda dapat menyesuaikan ("menskalakan") cluster dengan menambah atau mengurangi jumlah worker node primer atau sekunder (penskalaan horizontal) dalam cluster. Anda dapat menskalakan cluster Managed Service untuk Apache Spark kapan saja, bahkan saat tugas sedang berjalan di cluster. Anda tidak dapat mengubah jenis mesin cluster yang ada (penskalaan vertikal). Untuk menskalakan secara vertikal, buat cluster menggunakan jenis mesin yang didukung, lalu migrasikan tugas ke cluster baru.
Anda dapat menskalakan cluster Managed Service untuk Apache Spark untuk hal berikut:
- untuk meningkatkan jumlah worker agar tugas berjalan lebih cepat.
- untuk mengurangi jumlah worker guna menghemat biaya (lihat Penonaktifan Lancar sebagai opsi untuk digunakan saat memperkecil ukuran cluster guna menghindari kehilangan pekerjaan yang sedang berlangsung).
- untuk meningkatkan jumlah node guna memperluas penyimpanan Hadoop Distributed File System (HDFS) yang tersedia.
Karena cluster dapat diskalakan lebih dari sekali, Anda mungkin ingin meningkatkan atau mengurangi ukuran cluster pada satu waktu, lalu mengurangi atau meningkatkan ukurannya nanti.
Rekomendasi:
Hapus worker dengan hati-hati: Jika Anda menghapus worker dari cluster, pastikan ukuran cluster baru cukup untuk menangani workload Anda; jika tidak, tugas Anda mungkin memerlukan waktu lama untuk diselesaikan atau mungkin berhenti merespons.
Menghindari penskalaan worker primer: Worker primer menjalankan DataNode HDFS, sedangkan worker sekunder hanya melakukan komputasi. Penskalaan worker primer memiliki risiko. Misalnya, NameNode HDFS dapat memiliki beberapa kondisi race selama operasi penskalaan yang dapat menyebabkan HDFS menjadi rusak dan penghapusan mengalami hambatan tanpa batas waktu. Untuk mengetahui informasi selengkapnya, lihat Menghindari penskalaan worker primer.
Menggunakan penskalaan
Ada tiga cara untuk menskalakan cluster Managed Service untuk Apache Spark:
- Gunakan alat command line
gclouddi gcloud CLI. - Edit konfigurasi cluster di konsolGoogle Cloud .
- Menggunakan REST API.
Worker baru yang ditambahkan ke cluster akan menggunakan jenis mesin yang sama dengan worker yang ada. Misalnya, jika cluster dibuat dengan worker yang menggunakan jenis mesin n1-standard-8, worker baru juga akan menggunakan jenis mesin n1-standard-8.
Anda dapat menskalakan jumlah worker utama atau jumlah worker sekunder (preemptible), atau keduanya. Misalnya, jika Anda hanya menskalakan jumlah worker preemptible, jumlah worker primer akan tetap sama.
gcloud
Untuk menskalakan cluster dengangcloud dataproc clusters update,
jalankan perintah berikut:
gcloud dataproc clusters update cluster-name \ --region=region \ [--num-workers and/or --num-secondary-workers]=new-number-of-workers
gcloud dataproc clusters update dataproc-1 \
--region=region \
--num-workers=5
...
Waiting on operation [operations/projects/project-id/operations/...].
Waiting for cluster update operation...done.
Updated [https://dataproc.googleapis.com/...].
clusterName: my-test-cluster
...
masterDiskConfiguration:
bootDiskSizeGb: 500
masterName: dataproc-1-m
numWorkers: 5
...
workers:
- my-test-cluster-w-0
- my-test-cluster-w-1
- my-test-cluster-w-2
- my-test-cluster-w-3
- my-test-cluster-w-4
...
REST API
Lihat clusters.patch.
Contoh
PATCH /v1/projects/project-id/regions/us-central1/clusters/example-cluster?updateMask=config.worker_config.num_instances,config.secondary_worker_config.num_instances
{
"config": {
"workerConfig": {
"numInstances": 4
},
"secondaryWorkerConfig": {
"numInstances": 2
}
},
"labels": null
}
Konsol
Setelah cluster dibuat, Anda dapat menskalakan cluster dengan membuka halaman Detail cluster untuk cluster dari halaman Cluster Google Cloud konsol, lalu mengklik tombol Edit di tab Konfigurasi.
Masukkan nilai baru untuk jumlah Worker node dan/atau
Worker node preemptible (diperbarui menjadi "5" dan "2" dalam screenshot berikut).
Klik Save untuk memperbarui cluster.
Cara Managed Service untuk Apache Spark memilih node cluster yang akan dihapus
Pada cluster yang dibuat dengan versi image 1.5.83+, 2.0.57+, dan 2.1.5+, saat memperkecil skala cluster, Managed Service for Apache Spark berupaya meminimalkan dampak penghapusan node pada aplikasi YARN yang berjalan dengan menghapus node yang tidak aktif, tidak responsif, dan tidak ada aktivitas terlebih dahulu, lalu menghapus node dengan master aplikasi YARN yang berjalan dan container yang berjalan paling sedikit.
Penghentian tuntas
Saat Anda menurunkan skala cluster, pekerjaan yang sedang berlangsung dapat berhenti sebelum selesai. Jika menggunakan Managed Service untuk Apache Spark v 1.2 atau yang lebih baru, Anda dapat menggunakan penghentian tuntas, yang menggabungkan Penghentian Layanan Node YARN secara halus untuk menyelesaikan pekerjaan yang sedang berlangsung pada worker sebelum dihapus dari cluster Managed Service untuk Apache Spark Cloud.
Penghentian halus dan worker sekunder
Grup worker preemptible (sekunder) terus menyediakan atau menghapus worker untuk mencapai ukuran yang diharapkan, bahkan setelah operasi penskalaan cluster ditandai selesai. Jika Anda mencoba melakukan penghentian tuntas worker sekunder dan menerima pesan error yang mirip dengan berikut ini:
"Grup worker sekunder tidak dapat diubah di luar Managed Service untuk Apache Spark. Jika Anda baru saja
membuat atau mengupdate cluster ini, tunggu beberapa menit sebelum menonaktifkan
dengan baik agar semua instance sekunder dapat bergabung atau keluar dari cluster.
Expected secondary worker group size: x, actual size: y",
tunggu beberapa menit, lalu ulangi permintaan penghentian tuntas.
Gunakan penghentian tuntas
Penghentian Layanan Tanpa Masalah Managed Service untuk Apache Spark menggabungkan Penghentian Layanan Tanpa Masalah Node YARN untuk menyelesaikan pekerjaan yang sedang berlangsung pada worker sebelum dihapus dari cluster Managed Service untuk Apache Spark Cloud. Secara default, penghentian tuntas dinonaktifkan. Anda mengaktifkannya dengan menetapkan nilai waktu tunggu saat mengupdate cluster untuk menghapus satu atau beberapa worker dari cluster.
gcloud
Saat Anda mengupdate cluster untuk menghapus satu atau beberapa worker, gunakan perintah gcloud dataproc clusters update dengan flag--graceful-decommission-timeout. Nilai waktu tunggu
(string) dapat berupa nilai "0s" (default; penghentian paksa, bukan penghentian halus)
atau durasi positif yang relatif terhadap waktu saat ini (misalnya, "3s").
Durasi maksimumnya adalah 1 hari.
gcloud dataproc clusters update cluster-name \ --region=region \ --graceful-decommission-timeout="timeout-value" \ [--num-workers and/or --num-secondary-workers]=decreased-number-of-workers \ ... other args ...
REST API
Lihat clusters.patch.gracefulDecommissionTimeout. Nilai waktu tunggu (string) dapat berupa nilai "0" (default; penghentian paksa, bukan penghentian halus) atau durasi dalam detik (misalnya, "3s"). Durasi maksimumnya adalah 1 hari.Konsol
Setelah cluster dibuat, Anda dapat memilih penghentian cluster secara halus dengan membuka halaman Cluster details untuk cluster dari halaman Clusters Google Cloud konsol, lalu mengklik tombol Edit di tab Configuration.
Di bagian Penghentian Tuntas, pilih
Gunakan penghentian tuntas, lalu pilih nilai waktu tunggu.
Klik Save untuk memperbarui cluster.
Membatalkan operasi penurunan skala penghentian tuntas
Pada cluster Managed Service untuk Apache Spark yang dibuat dengan versi image
2.0.57+
atau 2.1.5+,
Anda dapat menjalankan perintah gcloud dataproc operations cancel
atau mengeluarkan permintaan operations.cancel
Managed Service untuk Apache Spark API
untuk membatalkan operasi penurunan skala penghentian halus.
Jika Anda membatalkan operasi penurunan skala penghentian tuntas:
worker dalam status
DECOMMISSIONINGakan diaktifkan kembali dan menjadiACTIVEsetelah pembatalan operasi selesai.jika operasi penurunan skala menyertakan update label, update tersebut mungkin tidak akan diterapkan.
Untuk memverifikasi status permintaan pembatalan, Anda dapat
menjalankan perintah gcloud dataproc operations describe
atau mengeluarkan permintaan operations.get
API Managed Service untuk Apache Spark. Jika operasi pembatalan berhasil, status operasi dalam akan ditandai
sebagai CANCELLED.