Menskalakan cluster

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:

  1. untuk meningkatkan jumlah pekerja agar tugas berjalan lebih cepat.
  2. untuk mengurangi jumlah pekerja agar menghemat uang (lihat Penghentian Tuntas sebagai opsi yang dapat digunakan saat memperkecil ukuran cluster untuk menghindari hilangnya pekerjaan yang sedang berlangsung).
  3. untuk meningkatkan jumlah node guna 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.

Menggunakan penskalaan

Ada tiga cara untuk menskalakan cluster Managed Service untuk Apache Spark:

  1. Menggunakan alat gcloud command line di gcloud CLI.
  2. Mengedit konfigurasi cluster di Google Cloud konsol.
  3. 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 dengan gcloud 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
dengan cluster-name adalah nama cluster yang akan diupdate, dan new-number-of-workers adalah jumlah node pekerja primer dan/atau sekunder yang diupdate. Misalnya, untuk menskalakan cluster bernama "dataproc-1" agar menggunakan lima node pekerja primer, jalankan perintah berikut.
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
}
Google Cloud

Konsol

Setelah cluster dibuat, Anda dapat menskalakan cluster dengan membuka halaman Detail cluster untuk cluster dari halaman Google Cloud konsol Cluster, lalu mengklik tombol Edit di tab Konfigurasi. Masukkan nilai baru untuk jumlah Node pekerja dan/atau Node pekerja preemptible (diupdate menjadi "5" dan "2", masing-masing, dalam screenshot berikut). Klik Simpan 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 digunakan 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 pekerja sekunder secara tuntas dan menerima pesan error yang mirip dengan yang berikut:

"Secondary worker group cannot be modified outside of Managed Service for Apache Spark. If you recently created or updated this cluster, wait a few minutes before gracefully decommissioning to allow all secondary instances to join or leave the 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 paksa, bukan penghentian tuntas) atau durasi positif 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 tuntas) atau durasi dalam detik (misalnya, "3s"). Durasi maksimumnya adalah 1 hari.

Konsol

Setelah cluster dibuat, Anda dapat memilih penghentian tuntas a cluster dengan membuka halaman Detail cluster untuk cluster dari halaman Google Cloud konsol Cluster, lalu mengklik tombol Edit di tab Konfigurasi. Di bagian Penghentian Tuntas, pilih Gunakan penghentian tuntas, lalu pilih nilai waktu tunggu. Klik Simpan 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 DECOMMISSIONING akan ditugaskan kembali dan menjadi ACTIVE setelah 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.