Pekerja sekunder Dataproc

Selain menggunakan VM Compute Engine standar sebagai pekerja Dataproc (disebut pekerja "utama"), cluster Dataproc dapat menggunakan secondary pekerja.

Karakteristik berikut berlaku untuk semua pekerja sekunder di cluster Dataproc:

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

  • Tidak ada cluster khusus pekerja sekunder—Cluster Anda harus memiliki pekerja utama. Jika Anda membuat cluster dan tidak menentukan jumlah pekerja utama, Dataproc akan menambahkan dua pekerja utama ke cluster tersebut.

  • Jenis mesin—Secara default, pekerja sekunder menggunakan jenis mesin dari pekerja utama cluster. Misalnya, jika Anda membuat cluster dengan pekerja utama yang menggunakan jenis mesin n1-standard-4, 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 Dataproc untuk mengetahui informasi selengkapnya.

  • Ukuran persistent disk—Secara default, pekerja sekunder dibuat dengan ukuran boot disk pekerja utama yang lebih kecil atau 100 GB. Kapasitas disk ini digunakan untuk penyimpanan data dalam cache 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 flag ini meskipun cluster tidak akan memiliki pekerja sekunder saat dibuat.

  • Pembuatan Asinkron—Jika Anda menambahkan pekerja sekunder dengan membuat atau menskalakan cluster, pekerja sekunder mungkin tidak akan disediakan pada saat operasi pembuatan atau pembaruan selesai. Hal ini karena Dataproc mengelola pekerja sekunder menggunakan Grup Instance Terkelola (MIG), yang membuat VM secara asinkron segera setelah dapat disediakan (lihat Memeriksa status instance terkelola ).

Pekerja sekunder yang dapat dihentikan dan tidak dapat dihentikan

Ada tiga jenis pekerja sekunder: spot VM, preemptible VM standar, dan non-preemptible VM. Jika Anda menentukan pekerja sekunder untuk cluster, mereka harus berjenis sama. Jenis pekerja sekunder Dataproc default adalah preemptible VM standar.

Contoh: Jika memilih tiga pekerja sekunder saat membuat cluster, Anda dapat menentukan bahwa ketiganya akan menjadi Spot VM, atau ketiganya akan menjadi preemptible VMS (standar), atau ketiganya akan menjadi non-preemptible VM, tetapi Anda tidak dapat menentukan bahwa masing-masing akan menjadi jenis yang berbeda.

Spot VM adalah jenis preemptible VM Compute Engine terbaru. VM ini memiliki model penetapan harga berbiaya lebih rendah dari preemptible VM standar, tetapi tidak seperti preemptible VM standar dengan masa aktif maksimum 24 jam, spot VM tidak memiliki masa aktif maksimum. Pekerja spot dan preemptible VM standar akan diklaim kembali dan dihapus dari cluster Dataproc jika diperlukan oleh Google Cloud untuk tugas lain.

Pekerja preemptible

  • Meskipun potensi penghapusan pekerja preemptible dapat memengaruhi stabilitas tugas, Anda dapat memutuskan untuk menggunakan preemptible instance guna menurunkan biaya komputasi per jam untuk pemrosesan data yang tidak penting, atau 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 dihentikan di cluster Anda harus kurang dari 50% dari total jumlah semua pekerja (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 sementara dibandingkan dengan tugas yang dijalankan pada pekerja non-preemptible. Untuk meningkatkan toleransi tugas hingga kegagalan tugas level 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 preemption dapat menyebabkan eksekusi tugas yang lebih lama dengan biaya tugas yang lebih tinggi. Meskipun penggunaan Enhanced Flexibility Mode (EFM) dengan preemptible VM dapat membantu mengurangi hasil ini, penghematan biaya keseluruhan preemptible VM akan bervariasi untuk setiap kasus penggunaan. Umumnya, tugas jangka pendek lebih cocok untuk penggunaan preemptible VM, karena probabilitas preemption selama eksekusi tugas akan lebih rendah. Coba berbagai opsi tugas, seperti tanpa preemptible VM dan preemptible VM dengan EFM, untuk memperkirakan biaya dan mendapatkan solusi terbaik.

Pekerja non-preemptible

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

Menggunakan pekerja sekunder

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

  • Pekerja sekunder harus memiliki jenis yang sama.
  • Anda dapat memperbarui cluster setelah dibuat untuk mengubah jumlah pekerja sekunder di cluster Anda, tetapi bukan jenisnya.
  • Update label diterapkan ke semua pekerja preemptible sekunder dalam waktu 24 jam. Pembaruan label tidak diterapkan ke pekerja sekunder non-preemptible yang sudah ada. Pembaruan label diterapkan ke semua pekerja yang ditambahkan ke cluster setelah pembaruan label. Misalnya, jika Anda meningkatkan skala cluster, semua pekerja primer dan sekunder baru akan memiliki label baru.

Konsol

Anda dapat menentukan jumlah pekerja sekunder saat membuat cluster Dataproc dari Konsol Google Cloud. Setelah cluster dibuat, Anda dapat menambahkan dan menghapus pekerja sekunder dengan mengedit konfigurasi cluster dari Konsol Google Cloud.

Membuat cluster dengan pekerja sekunder

Anda dapat menetapkan jumlah dan jenis pekerja sekunder yang akan diterapkan ke cluster baru dari bagian Node pekerja sekunder pada panel Konfigurasi node di halaman Buat cluster Dataproc di konsol Google Cloud. Tentukan jumlah dan jenis pekerja sekunder di kolom Pekerja sekunder dan kolom Preemptibility.

Memperbarui cluster dengan instance sekunder

Untuk memperbarui jumlah pekerja sekunder dalam sebuah cluster, klik nama cluster di halaman Clusters pada Konsol Google Cloud. Di halaman Cluster details. Klik tab KONFIGURASI, lalu klik EDIT dan perbarui angka di kolom Secondary worker node.

Menghapus semua instance sekunder dari cluster

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

Perintah gcloud

Gunakan perintah gcloud dataproc clusters create untuk menambahkan pekerja sekunder ke cluster saat cluster dibuat. Setelah cluster dibuat, Anda dapat menambahkan atau menghapus pekerja sekunder ke atau dari cluster dengan perintah gcloud dataproc clusters update (jumlahnya, tetapi bukan jenis pekerja 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. Perhatikan bahwa pekerja sekunder adalah preemptible VM standar secara default. Anda dapat menentukan pekerja sekunder non-preemptible saat membuat cluster dengan menetapkan --secondary-worker-type=non-preemptible (properti dataproc:secondary-workers.is-preemptible.override tidak lagi digunakan untuk menentukan jenis pekerja sekunder).

Contoh 1

Perintah berikut akan 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 (preemptible).

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

Contoh 3

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

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

Mengupdate cluster dengan pekerja sekunder

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

Contoh

Perintah berikut akan mengupdate "example-cluster" untuk menggunakan empat pekerja sekunder (dari jenis atau jenis default 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 Dataproc clusters.create API yang menambahkan pekerja sekunder ke cluster saat cluster dibuat. Perhatikan bahwa pekerja sekunder adalah VM preemptible standar secara default.

Contoh 1

Permintaan POST berikut membuat "cluster1" dengan dua pekerja 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 (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 pekerja sekunder non-preemptible.


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

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

Mengupdate cluster dengan pekerja sekunder

Gunakan Dataproc clusters.patch API untuk menambahkan dan menghapus pekerja sekunder.

Contoh

Permintaan PATCH berikut mengupdate cluster agar memiliki empat pekerja sekunder (dari jenis atau jenis default 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
    }
  }
}

Memecahkan masalah pekerja sekunder

Masalah izin akun layanan: Pekerja sekunder dibuat melalui grup instance terkelola dan Compute Engine menggunakan akun layanan Agen Layanan Google API project Anda untuk menjalankan operasi grup instance terkelola. Nama akun layanan ini diformat sebagai berikut: project-id@cloudservices.gserviceaccount.com.

Jika ada masalah izin pada akun layanan ini, log Dataproc tidak akan melaporkan kegagalan untuk membuat worker sekunder, tetapi worker yang gagal akan dicantumkan di bawah tab VM INSTANCES pada halaman Cluster details di Konsol Google Cloud tanpa tanda centang hijau (buka halaman Clusters Dataproc, 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, lihat log di Logs Explorer untuk jenis resource "Grup Instance Google Compute Engine", dan filter untuk ID grup instance yang sesuai. Filter ID grup instance akan menampilkan nama grup instance dalam format dataproc-CLUSTER NAME-sw dan ID grup instance akan diisi otomatis dalam kueri logging. Daripada menggunakan filter drop-down, Anda juga dapat menerapkan filter logging untuk resource.type="gce_instance_group" dan resource.labels.instance_group_name="dataproc-CLUSTER NAME-sw".

  • Masalah izin image kustom: Jika VM cluster Dataproc dibuat dengan gambar kustom yang diambil dari project lain, peran Compute Image User harus ditetapkan ke akun layanan project-id@cloudservices.gserviceaccount.com project Anda (lihat bagian Memberi grup instance terkelola akses ke image). Jika peran yang benar tidak ditetapkan, pesan error ini akan muncul di log: Required 'compute.images.useReadOnly' permission for 'projects/[IMAGE PROJECT]/global/images/[IMAGE NAME]