Pekerja sekunder Managed Service untuk Apache Spark

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

Karakteristik berikut berlaku untuk semua worker sekunder di cluster Managed Service untuk Apache Spark:

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

  • Tidak ada cluster khusus worker sekunder—Cluster Anda harus memiliki worker primer. Jika Anda membuat cluster dan 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 worker primer cluster. Misalnya, jika Anda membuat cluster dengan worker primer yang menggunakan jenis mesin n1-standard-4, secara default, semua worker sekunder yang ditambahkan ke cluster juga akan menggunakan mesin n1-standard-4.

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

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

  • Pembuatan Asinkron—Saat Anda menambahkan worker sekunder dengan membuat atau meningkatkan skala cluster, worker sekunder mungkin tidak disediakan pada saat operasi pembuatan atau pembaruan selesai. Hal ini karena Managed Service untuk Apache Spark mengelola worker sekunder menggunakan Managed Instance Group (MIG), yang membuat VM secara asinkron segera setelah dapat disediakan (lihat Memeriksa status instance terkelola).

Worker sekunder preemptible dan non-preemptible

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

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

Pekerja preemptible

  • Meskipun potensi penghapusan worker preemptible dapat memengaruhi stabilitas tugas, Anda dapat memutuskan untuk menggunakan instance preemptible guna 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 mendapatkan hasil terbaik, jumlah worker preemptible di cluster Anda harus kurang dari 50% dari jumlah total semua worker (primer ditambah semua worker sekunder) di cluster Anda.

  • Saat menggunakan worker preemptible, tugas Anda kemungkinan besar akan mengalami lebih banyak kegagalan tugas worker tunggal sementara dibandingkan dengan tugas yang dijalankan pada worker 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 VM preemptible tidak selalu menghemat biaya karena preemption 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 VM preemptible akan bervariasi dengan setiap kasus penggunaan. Umumnya, tugas yang berumur pendek lebih cocok untuk penggunaan preemptible VM, karena probabilitas preemption selama eksekusi tugas akan lebih rendah. Coba opsi tugas yang berbeda, seperti tanpa VM preemptible dan VM preemptible dengan EFM, untuk memperkirakan biaya dan mendapatkan solusi terbaik.

Pekerja non-preemptible

Memilih worker sekunder

Anda dapat menentukan jumlah dan jenis worker sekunder saat membuat cluster menggunakan Google Cloud konsol, gcloud CLI atau Managed Service untuk Apache Spark API.

  • Anda dapat menggabungkan worker sekunder spot dengan 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 worker baru akan memiliki label baru.

Konsol

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

Membuat cluster dengan worker sekunder

Anda dapat menetapkan jumlah dan jenis worker sekunder yang akan diterapkan ke cluster baru dari bagian Secondary worker nodes di panel Configure nodes pada halaman Managed Service untuk Apache Spark Create a cluster di Google Cloud konsol. Tentukan jumlah dan jenis worker sekunder di kolom Secondary worker nodes dan Preemptibility, masing-masing.

Memperbarui cluster dengan instance sekunder

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

Menghapus semua instance sekunder dari cluster

Untuk menghapus semua worker sekunder dari cluster, perbarui konfigurasi cluster seperti yang dijelaskan sebelumnya, dengan menentukan 0 di kolom Secondary worker nodes.

Perintah Google Cloud CLI

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

Membuat cluster dengan worker sekunder

Untuk membuat cluster dengan worker sekunder, gunakan perintah gcloud dataproc clusters create dengan argumen --num-secondary-workers. Worker sekunder adalah VM preemptible standar secara default. Anda dapat menentukan worker sekunder non-preemptible atau spot saat membuat cluster dengan menetapkan --secondary-worker-type flag 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 flag tambahan untuk menggabungkan worker sekunder spot dengan non-preemptible.

Contoh 1

Perintah berikut membuat "cluster1" dengan dua worker 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 worker sekunder spot (preemptible).

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
Mengubah ukuran boot disk worker sekunder. Secara default, semua worker sekunder dibuat dengan ukuran 1000 GB atau ukuran boot disk worker primer, mana saja yang lebih kecil. 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. Flag ini dapat ditentukan meskipun cluster tidak memiliki worker sekunder pada waktu pembuatan. Izinkan konsol membuat permintaan pembuatan cluster Anda. Google Cloud Anda dapat mengklik link Equivalent REST or command line di bagian bawah panel kiri halaman Managed Service untuk Apache Spark Create a cluster agar konsol membuat perintah alat gcloud atau permintaan REST API yang setara. Google Cloud

Memperbarui cluster dengan worker sekunder

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

Contoh

Perintah berikut memperbarui 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 worker sekunder dari cluster

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

Contoh

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

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

REST API

Membuat cluster dengan worker sekunder

Gunakan Managed Service untuk Apache Spark clusters.create API untuk menambahkan worker sekunder ke cluster saat cluster dibuat. Contoh berikut menunjukkan cara membuat cluster dengan setiap jenis worker sekunder: preemptible (default), spot (preemptible), dan non-preemptible. Anda dapat menggunakan kolom tambahan untuk menggabungkan worker sekunder spot dengan 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 worker VM spot (preemptible).


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 non-preemptible worker sekunder.


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 Managed Service untuk Apache Spark clusters.patch API untuk menambahkan dan menghapus worker sekunder.

Contoh

Permintaan PATCH berikut memperbarui 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 Google Cloud konsol membuat permintaan pembuatan cluster Anda. Anda dapat mengklik link Equivalent REST or command line di bagian bawah panel kiri halaman Managed Service untuk Apache Spark Create a cluster agar konsol membuat perintah gcloud CLI atau permintaan REST API yang setara. Google Cloud

Memecahkan masalah worker sekunder

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

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

    1. Temukan nama grup instance terkelola (instanceGroupManagerName).

      Konsol

      1. Buka halaman Clusters Managed Service untuk Apache Spark, lalu klik nama cluster untuk membuka halaman Cluster details untuk cluster.
      2. Klik Equivalent REST di bagian bawah halaman, lalu lihat nilai config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.

      Google Cloud 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 clusters.get permintaan 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.

Menggabungkan worker sekunder spot dengan non-preemptible

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

Setelan worker sekunder untuk menggabungkan worker sekunder spot dengan 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:

  • secondary worker number: Jumlah total worker sekunder yang akan disediakan.

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

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

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

    • standardCapacityPercentAboveBase: Persen worker sekunder yang tersisa untuk diisi dengan VM non-preemptible.
    • Jumlah yang tersisa yang diperlukan untuk memenuhi jumlah total worker sekunder yang diminta akan diisi dengan VM spot.

Contoh:

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

Hasil:

  • Non-preemptible: 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 Managed Service untuk Apache Spark API untuk menggabungkan worker sekunder spot dengan non-preemptible saat membuat cluster.

gcloud

Jalankan perintah berikut secara lokal atau di Cloud Shell untuk membuat cluster dengan campuran worker 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 worker sekunder spot dengan non-preemptible, 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 campuran worker sekunder dengan VM fleksibel

Anda dapat menggabungkan worker sekunder spot dan non-preemptible serta menentukan bentuk VM 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 campuran worker sekunder

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

Preferensi worker sekunder

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

Penskalaan worker sekunder

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

Memperbarui setelan campuran worker 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 worker sekunder setelah membuat cluster.

Preemption worker sekunder spot

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