Sebelum memulai
- Anda harus telah membuat cluster zonal atau regional Google Kubernetes Engine (GKE) standar (bukan autopilot) yang telah mengaktifkan Workload Identity di cluster.
Membuat Dataproc di cluster virtual GKE
Cluster virtual Dataproc di GKE dibuat sebagai platform deployment untuk komponen Dataproc. Ini adalah resource virtual, dan tidak seperti cluster Dataproc di Compute Engine, tidak menyertakan VM master dan pekerja Dataproc yang terpisah.
Dataproc di GKE membuat node pool dalam cluster GKE saat Anda membuat cluster virtual Dataproc di GKE.
Tugas Dataproc di GKE dijalankan sebagai pod di node pool ini. Node pool dan penjadwalan pod di node pool dikelola oleh GKE.
Membuat beberapa cluster virtual. Anda dapat membuat dan menjalankan beberapa cluster virtual di cluster GKE untuk mendapatkan penggunaan resource yang lebih baik dengan berbagi node pool di seluruh cluster virtual.
- Setiap cluster virtual:
- dibuat dengan properti terpisah, termasuk versi mesin Spark dan identitas beban kerja
- diisolasi dalam namespace GKE terpisah di cluster GKE
- Setiap cluster virtual:
Konsol
Di konsol Google Cloud, buka halaman Cluster Dataproc.
Klik Buat kluster.
Pada dialog Create Dataproc cluster, klik Create di baris Cluster on GKE.
Di panel Siapkan cluster:
- Di kolom Cluster Name, masukkan nama untuk cluster.
- Dalam daftar Region, pilih region untuk cluster virtual Dataproc di GKE. Region ini harus sama dengan region tempat cluster GKE yang ada berada (yang Anda pilih di item berikutnya).
- Di kolom Kubernetes Cluster, klik Browse untuk memilih region tempat cluster GKE yang ada berada.
- Opsional: Di kolom Cloud Storage staging bucket, Anda dapat mengklik Browse untuk memilih bucket Cloud Storage yang ada. Dataproc di GKE akan menyiapkan artefak di bucket. Abaikan kolom ini agar Dataproc di GKE membuat bucket staging.
Di panel kiri, klik Konfigurasi Node Pools, lalu di panel Node Pools, klik Tambahkan pool.
- Untuk menggunakan kembali node pool Dataproc di GKE yang ada:
- Klik Gunakan kembali node pool yang ada.
- Masukkan nama kumpulan node yang ada dan pilih Peran-nya. Setidaknya satu node pool harus memiliki peran DEFAULT.
- Klik Done.
- Untuk membuat node pool Dataproc on GKE baru:
- Klik Buat node pool baru.
- Masukkan nilai kumpulan node berikut:
- Nama node pool
- Peran: Setidaknya satu node pool harus memiliki peran DEFAULT.
- Lokasi: Tentukan zona dalam region cluster Dataproc di GKE.
- Jenis mesin node pool
- Platform CPU
- Preemptibility
- Min: Jumlah node minimum.
- Max: Jumlah node maksimum. Jumlah node maksimum harus lebih besar dari 0.
- Klik Tambahkan kumpulan untuk menambahkan kumpulan node lainnya. Semua kumpulan node harus memiliki lokasi. Anda dapat menambahkan total empat node pool.
- Untuk menggunakan kembali node pool Dataproc di GKE yang ada:
(Opsional) Jika Anda telah menyiapkan Dataproc Persistent History Server (PHS) untuk digunakan guna melihat histori tugas Spark, di cluster Dataproc aktif dan dihapus di GKE, klik Sesuaikan cluster. Kemudian, di kolom History server cluster, jelajahi dan pilih cluster PHS Anda. Cluster PHS harus berada di region yang sama dengan cluster virtual Dataproc di GKE.
Klik Create untuk membuat cluster Dataproc. Cluster Dataproc di GKE akan muncul dalam daftar di halaman Clusters. Statusnya adalah Provisioning hingga cluster siap digunakan, lalu statusnya berubah menjadi Running.
gcloud
Tetapkan variabel lingkungan, lalu jalankan perintah
gcloud dataproc clusters gke create
secara lokal atau di Cloud Shell untuk membuat cluster Dataproc di GKE.
Menetapkan variabel lingkungan:
Catatan:DP_CLUSTER=Dataproc on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Dataproc PHS server name
DP_CLUSTER
: Menetapkan nama cluster virtual Dataproc, yang harus dimulai dengan huruf kecil, diikuti dengan maksimal 54 huruf kecil, angka, atau tanda hubung. Nama ini tidak boleh diakhiri dengan tanda hubung.REGION
: region harus sama dengan region tempat cluster GKE berada.GKE_CLUSTER
: Nama cluster GKE yang ada.BUCKET
: (Opsional) Anda dapat menentukan nama bucket Cloud Storage, yang akan digunakan Dataproc untuk menyiapkan artefak. Jika Anda tidak menentukan bucket, Dataproc di GKE akan membuat bucket staging.DP_POOLNAME
: Nama node pool yang akan dibuat di cluster GKE.PHS_CLUSTER
: (Opsional) Server PHS Dataproc yang akan digunakan untuk melihat histori tugas Spark di cluster Dataproc aktif dan dihapus di GKE. Cluster PHS harus berada di region yang sama dengan cluster virtual Dataproc di GKE.
Jalankan perintah:
Catatan:gcloud dataproc clusters gke create ${DP_CLUSTER} \ --region=${REGION} \ --gke-cluster=${GKE_CLUSTER} \ --spark-engine-version=latest \ --staging-bucket=${BUCKET} \ --pools="name=${DP_POOLNAME},roles=default" \ --setup-workload-identity \ --history-server-cluster=${PHS_CLUSTER}
--spark-engine-version
: Versi image Spark yang digunakan di cluster Dataproc. Anda dapat menggunakan ID, seperti3
,3.1
, ataulatest
, atau Anda dapat menentukan versi subminor lengkap, seperti3.1-dataproc-5
.--staging-bucket
: Hapus tanda ini agar Dataproc di GKE membuat bucket staging.--pools
: Flag ini digunakan untuk menentukan kumpulan node baru atau yang sudah ada yang akan dibuat atau digunakan Dataproc untuk menjalankan beban kerja. Cantumkan setelan node pool Dataproc di GKE, yang dipisahkan koma, misalnya: Anda harus menentukan node pool--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
name
danrole
. Setelan kumpulan node lainnya bersifat opsional. Anda dapat menggunakan beberapa flag--pools
untuk menentukan beberapa node pool. Setidaknya satu kumpulan node harus memiliki perandefault
. Semua kumpulan node harus memiliki lokasi yang sama.--setup-workload-identity
: Flag ini mengaktifkan binding Workload Identity. Dengan binding ini, akun layanan Kubernetes (KSA) dapat bertindak sebagai Akun Layanan VM Dataproc (Identitas Data Plane) default dari cluster virtual.
REST
Selesaikan
virtualClusterConfig
sebagai bagian dari permintaan
cluster.create
Dataproc API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT: Project ID Google Cloud
- REGION: Region cluster virtual Dataproc (region yang sama dengan region cluster GKE yang ada)
- DP_CLUSTER: Nama cluster Dataproc
- GKE_CLUSTER: Nama cluster GKE
- NODE_POOL: Nama node pool
- PHS_CLUSTER: Nama cluster Persistent History Server (PHS)
- BUCKET: (Opsional) Nama bucket staging. Biarkan kolom ini kosong agar Dataproc di GKE membuat bucket staging.
Metode HTTP dan URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
Meminta isi JSON:
{ "clusterName":"DP_CLUSTER", "projectId":"PROJECT", "virtualClusterConfig":{ "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } }, "kubernetesClusterConfig":{ "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"latest" } } }, "stagingBucket":"BUCKET" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "projectId":"PROJECT", "clusterName":"DP_CLUSTER", "status":{ "state":"RUNNING", "stateStartTime":"2022-04-01T19:16:39.865716Z" }, "clusterUuid":"98060b77-...", "statusHistory":[ { "state":"CREATING", "stateStartTime":"2022-04-01T19:14:27.340544Z" } ], "labels":{ "goog-dataproc-cluster-name":"DP_CLUSTER", "goog-dataproc-cluster-uuid":"98060b77-...", "goog-dataproc-location":"REGION", "goog-dataproc-environment":"prod" }, "virtualClusterConfig":{ "stagingBucket":"BUCKET", "kubernetesClusterConfig":{ "kubernetesNamespace":"dp-cluster", "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"3.1-..." }, "properties":{ "dpgke:dpgke.unstable.outputOnly.endpoints.sparkHistoryServer":"https://...", "spark:spark.eventLog.dir":"gs://BUCKET/.../spark-job-history", "spark:spark.eventLog.enabled":"true" } } }, "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } } }
Mengirim tugas Spark
Setelah cluster virtual Dataproc di GKE berjalan,
kirim tugas Spark
menggunakan konsol Google Cloud,
gcloud CLI, atau
Dataproc
jobs.submit
API (dengan menggunakan permintaan HTTP langsung atau
Cloud Client Libraries).
Contoh tugas Spark gcloud CLI:
gcloud dataproc jobs submit spark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ --class=org.apache.spark.examples.SparkPi \ --jars=local:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000
Contoh tugas PySpark gcloud CLI:
gcloud dataproc jobs submit pyspark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/python/pi.py \ -- 10
Contoh tugas SparkR gcloud CLI:
gcloud dataproc jobs submit spark-r \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/r/dataframe.R
Pembersihan
Hapus resource berikut yang digunakan dalam panduan memulai ini yang tidak ingin Anda terus gunakan.
Hapus node pool yang digunakan oleh cluster Dataproc di GKE.