Setelah membuat cluster Managed Service untuk Apache Spark, Anda dapat menyesuaikan ("menskalakan") cluster dengan menambah atau mengurangi jumlah node pekerja primer atau sekunder (penskalaan horizontal) di cluster. Anda dapat menskalakan cluster Managed Service untuk Apache Spark kapan saja, bahkan saat tugas 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:
- menambah jumlah pekerja agar tugas berjalan lebih cepat.
- mengurangi jumlah pekerja untuk menghemat uang (lihat Penghentian Tuntas sebagai opsi yang dapat digunakan saat memperkecil ukuran cluster untuk menghindari kehilangan pekerjaan yang sedang berlangsung).
- menambah jumlah node untuk memperluas penyimpanan Hadoop Distributed File System (HDFS) yang tersedia.
Karena cluster dapat diskalakan lebih dari satu kali, Anda mungkin ingin menambah atau mengurangi ukuran cluster pada satu waktu, lalu mengurangi atau menambah ukuran nanti.
Rekomendasi:
Hapus pekerja dengan hati-hati: Jika Anda menghapus pekerja 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.
Hindari penskalaan pekerja primer: Pekerja primer menjalankan DataNode HDFS, sedangkan pekerja sekunder hanya melakukan komputasi. Menskalakan pekerja primer memiliki risiko. Misalnya, NameNode HDFS dapat memiliki beberapa kondisi race selama operasi penskalaan yang dapat menyebabkan HDFS menjadi rusak dan penghentian tuntas menjadi macet tanpa batas waktu. Untuk mengetahui informasi selengkapnya, lihat Menghindari penskalaan pekerja primer.
Menggunakan penskalaan
Ada tiga cara untuk menskalakan cluster Managed Service untuk Apache Spark:
- Menggunakan alat command line
gclouddi gcloud CLI. - Mengedit konfigurasi cluster di Google Cloud konsol.
- Menggunakan REST API.
Pekerja baru yang ditambahkan ke cluster akan menggunakan
jenis mesin
yang sama dengan pekerja yang ada. Misalnya, jika cluster dibuat dengan pekerja yang menggunakan jenis mesin n1-standard-8, pekerja baru juga akan menggunakan jenis mesin n1-standard-8.
Anda dapat menskalakan jumlah pekerja primer atau jumlah pekerja sekunder (preemptible), atau keduanya. Misalnya, jika Anda hanya menskalakan jumlah pekerja preemptible, jumlah pekerja 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 Cluster details untuk cluster dari halaman Google Cloud konsol Clusters, lalu mengklik tombol Edit di tab Configuration.
Masukkan nilai baru untuk jumlah Worker nodes dan/atau
Preemptible worker nodes (diupdate menjadi "5" dan "2", masing-masing,
dalam screenshot berikut).
Klik Save untuk mengupdate cluster.
Cara Managed Service untuk Apache Spark memilih node cluster untuk dihapus
Di cluster yang dibuat dengan versi image 1.5.83+, 2.0.57+, dan 2.1.5+, saat memperkecil skala cluster, Managed Service untuk Apache Spark akan mencoba meminimalkan dampak penghapusan node pada aplikasi YARN yang berjalan dengan menghapus node yang tidak aktif, tidak sehat, dan tidak ada aktivitas terlebih dahulu, lalu menghapus node dengan master aplikasi YARN dan container yang berjalan paling sedikit.
Penghentian tuntas
Saat Anda memperkecil skala cluster, pekerjaan yang sedang berlangsung mungkin akan berhenti sebelum selesai. Jika Anda menggunakan Managed Service untuk Apache Spark v 1.2 atau yang lebih baru, Anda dapat menggunakan Penghentian Tuntas, yang menggabungkan Penghentian Tuntas Node YARN untuk menyelesaikan pekerjaan yang sedang berlangsung pada pekerja sebelum dihapus dari cluster Managed Service untuk Apache Spark Cloud.
Penghentian tuntas dan pekerja sekunder
Grup pekerja preemptible (sekunder) akan terus menyediakan atau menghapus pekerja untuk mencapai ukuran yang diharapkan meskipun setelah operasi penskalaan cluster ditandai selesai. Jika Anda mencoba menghentikan tuntas pekerja sekunder
dan menerima pesan error yang mirip dengan yang berikut:
"Secondary
worker group cannot be modified outside of Managed Service untuk Apache Spark. Jika Anda baru-baru ini membuat atau mengupdate cluster ini, tunggu beberapa menit sebelum menghentikan tuntas untuk memungkinkan semua instance sekunder bergabung atau keluar dari cluster.
Expected secondary worker group size: x, actual size: y",
tunggu
beberapa menit, lalu ulangi permintaan penghentian tuntas.
Menggunakan penghentian tuntas
Penghentian Tuntas Managed Service untuk Apache Spark menggabungkan Penghentian Tuntas Node YARN untuk menyelesaikan pekerjaan yang sedang berlangsung pada pekerja sebelum dihapus dari cluster Managed Service untuk Apache Spark Cloud. Secara default, penghentian tuntas dinonaktifkan. Anda dapat mengaktifkannya dengan menetapkan nilai waktu tunggu saat mengupdate cluster untuk menghapus satu atau beberapa pekerja dari cluster.
gcloud
Saat mengupdate cluster untuk menghapus satu atau beberapa pekerja, gunakan perintah gcloud dataproc clusters update dengan flag--graceful-decommission-timeout. Nilai waktu tunggu (string) dapat berupa nilai "0s" (default; penghentian tuntas paksa, bukan penghentian tuntas) atau durasi positif relatif terhadap waktu saat ini (misalnya, "3s").
Durasi maksimum 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 tuntas paksa, bukan penghentian tuntas) atau durasi dalam detik (misalnya, "3s"). Durasi maksimum adalah 1 hari.Konsol
Setelah cluster dibuat, Anda dapat memilih penghentian tuntas a cluster dengan membuka halaman Cluster details untuk cluster dari halaman Google Cloud console Clusters, lalu mengklik tombol Edit di tab Configuration.
Di bagian Penghentian Tuntas, pilih
Gunakan penghentian tuntas, lalu pilih nilai waktu tunggu.
Klik Save untuk mengupdate cluster.
Membatalkan operasi penurunan skala penghentian tuntas
Di 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 mengirimkan permintaan Managed Service untuk Apache Spark API
operations.cancel
untuk membatalkan operasi penurunan skala penghentian tuntas.
Saat Anda membatalkan operasi penurunan skala penghentian tuntas:
pekerja dalam status
DECOMMISSIONINGakan ditugaskan kembali dan menjadiACTIVEsetelah pembatalan operasi selesai.jika operasi penurunan skala mencakup update label, update tersebut mungkin tidak berlaku.
Untuk memverifikasi status permintaan pembatalan, Anda dapat
menjalankan perintah gcloud dataproc operations describe
atau mengirimkan permintaan operations.get
Managed Service untuk Apache Spark API. Jika operasi pembatalan berhasil, status operasi dalam akan ditandai sebagai CANCELLED.