Pekerja sekunder Managed Service untuk Apache Spark

Selain menggunakan VM Compute Engine standar sebagai pekerja Managed Service untuk Apache Spark (disebut pekerja "primer"), cluster Managed Service untuk Apache Spark dapat menggunakan pekerja secondary.

Karakteristik berikut berlaku untuk semua pekerja sekunder dalam cluster Managed Service untuk Apache Spark:

  • Hanya pemrosesan—Worker sekunder tidak menyimpan data. Node ini hanya berfungsi sebagai node pemrosesan. Oleh karena itu, Anda dapat menggunakan worker sekunder untuk menskalakan komputasi tanpa menskalakan penyimpanan.

  • Khusus worker sekunder—Anda dapat membuat cluster berskala nol dengan khusus worker sekunder. Namun, jika Anda membuat cluster standar dan hanya menentukan worker sekunder (Anda tidak menentukan jumlah worker primer), Managed Service untuk Apache Spark akan menambahkan dua worker primer ke cluster.

  • Jenis mesin—Secara default, worker sekunder menggunakan jenis mesin dari worker utama cluster. Misalnya, jika Anda membuat cluster dengan pekerja primer yang menggunakan jenis mesin n1-standard-4, secara default, semua pekerja sekunder yang ditambahkan ke cluster juga akan menggunakan mesin n1-standard-4.

    Daripada menggunakan jenis mesin pekerja utama default untuk pekerja sekunder, Anda dapat menentukan satu atau beberapa daftar jenis mesin yang diberi peringkat untuk pekerja sekunder. Lihat VM Fleksibel Managed Service untuk Apache Spark untuk mengetahui informasi selengkapnya.

  • Ukuran persistent disk—Secara default, worker sekunder dibuat dengan ukuran yang lebih kecil, yaitu 1000 GB atau ukuran boot disk worker utama. Ruang disk ini digunakan untuk caching data lokal dan tidak tersedia melalui HDFS. Anda dapat mengganti ukuran disk default dengan perintah gcloud dataproc clusters create --secondary-worker-boot-disk-size saat pembuatan cluster. Anda dapat menentukan tanda ini meskipun cluster tidak akan memiliki pekerja sekunder saat dibuat.

  • Pembuatan Asinkron—Saat Anda menambahkan worker sekunder dengan membuat atau melakukan penskalaan cluster, worker sekunder mungkin belum disediakan saat operasi pembuatan atau update selesai. Hal ini karena Managed Service untuk Apache Spark mengelola pekerja sekunder menggunakan Managed Instance Groups (MIG), yang membuat VM secara asinkron segera setelah VM dapat disediakan (lihat Memeriksa status instance terkelola).

Worker sekunder preemptible dan non-preemptible

Ada tiga jenis pekerja sekunder: Spot VM, Preemptible VM standar, dan VM non-preemptible. Jenis pekerja sekunder Managed Service untuk Apache Spark default adalah VM preemptible standar. Anda dapat menentukan kombinasi worker sekunder Spot dan non-preemptible.

Contoh: Jika Anda memilih tiga pekerja sekunder saat membuat cluster, Anda dapat menentukan tiga VM spot, tiga VM preemptible, tiga VM non-preemptible, atau kombinasi pekerja spot dan non-preemptible.

Pekerja preemptible

  • Meskipun potensi penghapusan pekerja yang dapat dihentikan dapat memengaruhi stabilitas tugas, Anda dapat memutuskan untuk menggunakan instance yang dapat dihentikan untuk menurunkan biaya komputasi per jam untuk pemrosesan data non-kritis atau untuk membuat cluster yang sangat besar dengan total biaya yang lebih rendah (Anda dapat menggunakan kalkulator harga Google Cloud untuk memperkirakan biaya).

  • Untuk hasil terbaik, jumlah pekerja yang dapat di-preempt di cluster Anda harus kurang dari 50% dari jumlah total semua pekerja (primer ditambah semua pekerja sekunder) di cluster Anda.

  • Saat menggunakan pekerja preemptible, tugas Anda kemungkinan besar akan mengalami lebih banyak kegagalan tugas pekerja tunggal yang bersifat sementara dibandingkan dengan tugas yang dijalankan pada pekerja non-preemptible. Untuk meningkatkan toleransi tugas terhadap kegagalan tugas tingkat rendah, Anda dapat menetapkan nilai properti cluster yang mirip dengan nilai properti default yang digunakan dengan cluster penskalaan otomatis untuk meningkatkan jumlah maksimum percobaan ulang tugas dan membantu menghindari kegagalan tugas.

  • Pertimbangan penghematan biaya: Penggunaan preemptible VM tidak selalu menghemat biaya karena penghentian dapat menyebabkan eksekusi tugas yang lebih lama dengan biaya tugas yang lebih tinggi. Meskipun penggunaan Mode Fleksibilitas yang Ditingkatkan (EFM) dengan VM preemptible dapat membantu mengurangi hasil ini, penghematan biaya keseluruhan dari VM preemptible akan bervariasi untuk setiap kasus penggunaan. Umumnya, tugas berdurasi singkat lebih cocok untuk penggunaan preemptible VM, karena kemungkinan terjadinya preempti selama eksekusi tugas akan lebih rendah. Coba opsi tugas yang berbeda, seperti tanpa VM yang dapat di-preempt dan VM yang dapat di-preempt dengan EFM, untuk memperkirakan biaya dan mendapatkan solusi terbaik.

Pekerja yang tidak dapat dihentikan

  • Anda dapat membuat cluster dengan worker sekunder non-preemptible untuk menskalakan komputasi tanpa mengorbankan stabilitas tugas. Untuk melakukannya, tentukan non-preemptible sebagai jenis pekerja sekunder. Anda dapat mencampur worker sekunder non-preemptible dengan spot.

Pilih pekerja sekunder

Anda dapat menentukan jumlah dan jenis pekerja sekunder saat membuat cluster menggunakan konsolGoogle Cloud , gcloud CLI atau Dataproc API.

  • Anda dapat mencampur spot dengan worker sekunder non-preemptible.
  • Anda dapat memperbarui cluster setelah dibuat untuk mengubah jumlah, tetapi bukan jenis, worker sekunder di cluster Anda.
  • Update label akan disebarkan ke semua worker sekunder preemptible dalam waktu 24 jam. Update label tidak akan disebarkan ke worker sekunder non-preemptible yang sudah ada. Update label akan disebarkan ke semua worker yang ditambahkan ke cluster setelah update label. Misalnya, jika Anda meningkatkan skala cluster, semua worker primer dan sekunder baru akan memiliki label baru.

Konsol

Anda dapat menentukan jumlah worker sekunder saat membuat cluster Managed Service untuk Apache Spark dari konsol Google Cloud . Setelah cluster dibuat, Anda dapat menambahkan dan menghapus pekerja sekunder dengan mengedit konfigurasi cluster dari Google Cloud konsol.

Membuat cluster dengan pekerja sekunder

  1. Buka halaman Create cluster.
  2. Klik Konfigurasi tambahan untuk meluaskan bagian tersebut.
  3. Edit Pekerja sekunder.
  4. Di panel yang terbuka, tentukan jumlah, jenis, dan setelan pekerja sekunder lainnya.

Memperbarui cluster dengan instance sekunder

Untuk memperbarui jumlah worker sekunder dalam cluster, klik nama cluster di halaman Clusters pada konsol Google Cloud . Di halaman Cluster details. Klik tab Configuration, lalu klik Edit dan perbarui angka di kolom Secondary worker nodes.

Menghapus semua instance sekunder dari cluster

Untuk menghapus semua pekerja sekunder dari cluster, perbarui konfigurasi cluster seperti yang dijelaskan sebelumnya, dengan menentukan 0 di kolom Node pekerja sekunder.

Perintah gcloud CLI

Gunakan perintah gcloud dataproc clusters create untuk menambahkan pekerja sekunder ke cluster saat cluster dibuat. Setelah cluster dibuat, Anda dapat menambahkan atau menghapus worker sekunder ke atau dari cluster dengan perintah gcloud dataproc clusters update (jumlah, tetapi bukan jenis worker sekunder dapat diperbarui).

Membuat cluster dengan pekerja sekunder

Untuk membuat cluster dengan pekerja sekunder, gunakan perintah gcloud dataproc clusters create dengan argumen --num-secondary-workers. Worker sekunder secara default adalah VM preemptible standar. Anda dapat menentukan worker sekunder non-preemptible atau spot saat membuat cluster dengan menyetel flag --secondary-worker-type ke `non-preemptible` atau `spot`. Contoh berikut menunjukkan cara membuat cluster dengan setiap jenis worker sekunder: `preemptible` (default), spot (preemptible), dan non-preemptible. Anda dapat menggunakan tanda tambahan untuk mencampur spot dengan worker sekunder non-preemptible.

Contoh 1

Perintah berikut membuat "cluster1" dengan dua pekerja sekunder preemptible standar (jenis default).

gcloud dataproc clusters create cluster1 \
    --num-secondary-workers=2 \
    --region=us-central1
Contoh 2

Perintah berikut menggunakan flag secondary-worker-type untuk membuat "cluster2" dengan dua pekerja sekunder spot (dapat di-preempt).

gcloud dataproc clusters create cluster2 \
    --num-secondary-workers=2 \
    --secondary-worker-type=spot \
    --region=us-central1

Contoh 3

Perintah berikut menggunakan flag secondary-worker-type untuk membuat "cluster3" dengan dua worker sekunder non-preemptible.

gcloud dataproc clusters create cluster3 \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1

Ubah ukuran disk boot pekerja sekunder. Secara default, semua worker sekunder dibuat dengan ukuran yang lebih kecil dari 1000 GB atau ukuran boot disk worker primer. Ruang disk ini digunakan untuk penyiapan cache data lokal dan tidak tersedia melalui HDFS. Anda dapat mengganti ukuran disk default dengan perintah gcloud dataproc clusters create --secondary-worker-boot-disk-size saat pembuatan cluster. Flag ini dapat ditentukan meskipun cluster tidak memiliki worker sekunder saat pembuatan.

Izinkan konsol Google Cloud membuat permintaan pembuatan cluster Anda. Di bagian bawah halaman Create cluster, klik Equivalent command line atau Equivalent REST agar konsol Google Cloud membuat perintah gcloud CLI atau permintaan REST API yang setara.

Memperbarui cluster dengan worker sekunder

Untuk memperbarui cluster guna menambahkan atau menghapus pekerja sekunder, gunakan perintah gcloud dataproc clusters update dengan flag --num-secondary-workers.

Contoh

Perintah berikut mengupdate example-cluster untuk menggunakan empat worker sekunder (dari jenis default atau jenis yang ditentukan saat Anda membuat cluster).

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=4 \
    --region=us-central1

Menghapus semua pekerja sekunder dari cluster

Untuk menghapus semua pekerja sekunder dari cluster, gunakan perintah gcloud dataproc clusters update dengan --num-secondary-workers ditetapkan ke 0.

Contoh

Perintah berikut menghapus semua pekerja sekunder dari "example-cluster".

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

REST API

Membuat cluster dengan pekerja sekunder

Gunakan API clusters.create Managed Service untuk Apache Spark guna menambahkan pekerja sekunder ke cluster saat cluster dibuat. Contoh berikut menunjukkan cara membuat cluster dengan setiap jenis pekerja sekunder: preemptible (default), spot (dapat di-preempt), dan non-preemptible. Anda dapat menggunakan kolom tambahan untuk mencampur spot dengan worker sekunder non-preemptible.

Contoh 1

Permintaan POST berikut membuat "cluster1" dengan dua worker VM preemptible standar (jenis default).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster1",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}

Contoh 2

Permintaan POST berikut membuat "cluster2" dengan dua pekerja VM spot (dapat di-preempt).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster2",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "SPOT"
    }
  }
}

Contoh 3

Permintaan POST berikut membuat "cluster3" dengan dua worker sekunder non-preemptible.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster3",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Memperbarui cluster dengan worker sekunder

Gunakan API Managed Service untuk Apache Spark clusters.patch untuk menambahkan dan menghapus pekerja sekunder.

Contoh

Permintaan PATCH berikut mengupdate cluster agar memiliki empat worker sekunder (dari jenis default atau jenis yang ditentukan saat Anda membuat cluster).


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 4
    }
  }
}

Izinkan konsol Google Cloud membuat permintaan pembuatan cluster Anda. Di bagian bawah halaman Create cluster, klik Equivalent command line atau Equivalent REST agar konsol Google Cloud membuat perintah gcloud CLI atau permintaan REST API yang setara.

Memecahkan masalah pekerja sekunder

  • Masalah izin akun layanan: Worker sekunder dibuat melalui grup instance terkelola. Jika ada masalah izin, log Managed Service untuk Apache Spark tidak akan melaporkan kegagalan pembuatan pekerja sekunder, tetapi pekerja yang gagal akan tercantum di tab VM Instances pada halaman Cluster details di konsolGoogle Cloud tanpa tanda centang hijau. Untuk melihat listingan, buka halaman Managed Service untuk Apache Spark Clusters, lalu klik nama cluster untuk membuka halaman Cluster details untuk cluster tersebut.

  • Masalah izin grup instance terkelola: Untuk memeriksa apakah ada masalah dengan izin grup instance terkelola:

    1. Temukan nama grup instance terkelola (instanceGroupManagerName).

      KonsolGoogle Cloud

      1. Buka halaman Clusters, lalu klik nama cluster untuk membuka halaman Cluster details untuk cluster tersebut.
      2. Klik REST yang setara di bagian bawah halaman, lalu lihat nilai config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.

      gcloud CLI

      Jalankan perintah gcloud dataproc clusters describe dengan flag --format untuk menampilkan instanceGroupManagerName.

      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      REST API

      Kirim permintaan clusters.get untuk menampilkan nilai config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.

    2. Lihat log di Logs Explorer.
    • Pilih jenis resource Google Compute Engine Instance Group, dan filter untuk nama grup instance terkelola.

    • Atau, Anda dapat menerapkan filter logging untuk `resource.type="gce_instance_group" and resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME.

Campurkan spot dengan worker sekunder non-preemptible

Anda dapat menentukan campuran worker sekunder spot dan non-preemptible saat Anda membuat cluster Managed Service untuk Apache Spark.

Setelan worker sekunder untuk menggabungkan worker sekunder spot dengan worker sekunder non-preemptible

Gunakan setelan worker sekunder berikut saat Anda membuat cluster Managed Service untuk Apache Spark guna mendapatkan tingkat kapasitas worker sekunder minimum dengan kemampuan untuk meningkatkan kapasitas saat VM spot tersedia:

  • jumlah worker sekunder: Jumlah total worker sekunder yang akan disediakan.

  • jenis worker sekunder: spot adalah jenis worker sekunder saat menggabungkan spot dengan worker sekunder non-preemptible.

  • standardCapacityBase: Jumlah worker sekunder (standar) non-preemptible yang akan disediakan. Worker sekunder non-preemptible disediakan sebelum jenis worker sekunder lainnya.

  • standardCapacityPercentAboveBase: Setelah jumlah pekerja sekunder standardCapacityBase terisi, jumlah pekerja sekunder yang tersisa yang diperlukan untuk memenuhi jumlah total pekerja sekunder yang diminta akan diisi dengan campuran VM non-preemptible dan spot sebagai berikut:

    • standardCapacityPercentAboveBase: Persen pekerja sekunder yang tersisa untuk diisi dengan VM yang tidak dapat di-preempt.
    • Jumlah yang tersisa yang diperlukan untuk memenuhi jumlah total pekerja sekunder yang diminta diisi dengan VM spot.

Contoh:

  • Jumlah pekerja sekunder: 15
  • standardCapacityBase: 5
  • standardCapacityPercentAboveBase 30%

Hasil:

  • Tidak dapat didahului: 8 = 5 (standardCapacityBase) + 3 (30% dari 10 yang tersisa)
  • Spot: 7 (70% dari 10 yang tersisa)
  • Total = 15

Membuat cluster dengan campuran worker sekunder spot dan non-preemptible

Anda dapat menggunakan gcloud CLI atau Dataproc API untuk menggabungkan pekerja sekunder spot dengan pekerja sekunder non-preemptible saat membuat cluster.

gcloud

Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster dengan campuran pekerja sekunder spot dan non-preemptible.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --secondary-worker-type=spot \
    --num-secondary-workers=NUMBER_SECONDARY_WORKERS \
    --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \
    --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \
    OTHER_FLAGS_AS_NEEDED

Catatan:

API

Untuk menggabungkan spot dengan pekerja sekunder yang tidak dapat di-preempt, tetapkan kolom API Managed Service untuk Apache Spark preemptibility, standardCapacityBase, dan standardCapacityPercentAboveBase sebagai bagian dari permintaan cluster.create, seperti yang ditunjukkan dalam contoh JSON berikut:

{
  "clusterName": "CLUSTER_NAME",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 15,
      **"preemptibility": "spot"**,
      "instanceFlexibilityPolicy": {
        "provisioningModelMix": {
          **"standardCapacityBase": STANDARD_CAPACITY_BASE**
          **"standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE**
        }
      }
    }
  }
}

Catatan:

Menggabungkan pencampuran pekerja sekunder dengan VM fleksibel

Anda dapat mencampur worker sekunder preemptible dan non-preemptible serta menentukan bentuk VM yang fleksibel untuk worker sekunder saat membuat cluster.

Contoh gcloud CLI:

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-central1 \
    --secondary-worker-type=spot \
    --num-secondary-workers=15 \
    --secondary-worker-standard-capacity-base=5 \
    --secondary-worker-standard-capacity-percent-above-base=30 \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
    ...other flags as needed

Karakteristik pencampuran pekerja sekunder

Bagian ini menjelaskan beberapa perilaku dan karakteristik yang terkait dengan mencampur pekerja sekunder spot dan non-preemptible.

Preferensi pekerja sekunder

Managed Service untuk Apache Spark tidak memberikan preferensi pada VM spot atau non-preemptible saat menjadwalkan aplikasi di pekerja sekunder.

Penskalaan pekerja sekunder

Saat pekerja sekunder diskalakan melalui penskalaan otomatis atau penskalaan manual, Managed Service untuk Apache Spark mempertahankan rasio spot-ke-non-preemptible yang diminta saat menambahkan pekerja sekunder.

Memperbarui setelan campuran pekerja sekunder

Anda menentukan campuran worker sekunder spot dan non-preemptible saat Anda membuat cluster Managed Service untuk Apache Spark. Anda tidak dapat mengubah setelan campuran pekerja sekunder setelah membuat cluster.

Preemption pekerja sekunder Spot

  • Managed Service untuk Apache Spark tidak mengontrol waktu preemption VM spot (lihat Preemption Spot VM).
  • Saat preemption spot terjadi, grup pekerja sekunder dapat berjalan dengan kapasitas yang berkurang untuk sementara hingga Compute Engine menyediakan ulang VM yang di-preempt.
  • Managed Service untuk Apache Spark tidak akan menambahkan kapasitas ke grup pekerja sekunder yang melebihi setelan awal grup.