Sebelum memulai
- Anda harus sudah 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
Dataproc pada cluster virtual GKE dibuat sebagai platform deployment untuk komponen Dataproc. Ini adalah resource virtual, dan tidak seperti cluster Dataproc di Compute Engine, VM ini tidak mencakup VM worker dan master Dataproc yang terpisah.
Dataproc di GKE membuat node pool di dalam cluster GKE saat Anda membuat Dataproc di cluster virtual GKE.
Dataproc di tugas GKE dijalankan sebagai pod pada kumpulan node ini. Kumpulan node dan penjadwalan pod di node pool dikelola oleh GKE.
Buat beberapa cluster virtual. Anda dapat membuat dan menjalankan beberapa cluster virtual pada cluster GKE untuk memperoleh peningkatan pemanfaatan resource dengan membagikan kumpulan node di seluruh cluster virtual.
- Setiap cluster virtual:
- dibuat dengan properti terpisah, termasuk versi mesin Spark dan workload identity
- diisolasi dalam namespace GKE yang terpisah di cluster GKE
- Setiap cluster virtual:
Konsol
Di konsol Google Cloud, buka halaman Clusters 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 tersebut.
- Dalam daftar Region, pilih region untuk Dataproc di cluster virtual GKE. Region ini harus merupakan region yang sama dengan tempat cluster GKE yang ada berada (yang Anda pilih di item berikutnya).
- Di kolom Cluster Kubernetes, 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 sudah ada. Dataproc di GKE akan menempatkan artefak di dalam bucket. Abaikan kolom ini agar Dataproc di GKE membuat bucket staging.
Di panel kiri, klik Configure Node pool, lalu di panel Node pool, klik Add a pool.
- Untuk menggunakan kembali Dataproc yang ada pada kumpulan node GKE:
- Klik Gunakan kembali kumpulan node yang ada.
- Masukkan nama kumpulan node yang ada, lalu pilih Role. Setidaknya satu kumpulan node harus memiliki peran DEFAULT.
- Klik Done.
- Untuk membuat Dataproc baru di kumpulan node GKE:
- Klik Create a new node pool.
- Masukkan nilai kumpulan node berikut:
- Nama node pool
- Peran: Setidaknya satu kumpulan node harus memiliki peran DEFAULT.
- Lokasi: Tentukan zona dalam region cluster Dataproc di GKE.
- Kumpulan node jenis mesin
- Platform CPU
- Preemptibility
- Min: Jumlah node minimum.
- Maksimum: Jumlah node maksimum. Jumlah node maksimum harus lebih besar dari 0.
- Klik Add a pool untuk menambahkan kumpulan node lainnya. Semua kumpulan node harus memiliki lokasi. Anda dapat menambahkan total empat kumpulan node.
- Untuk menggunakan kembali Dataproc yang ada pada kumpulan node GKE:
(Opsional) Jika Anda telah menyiapkan Dataproc Persistent History Server (PHS) yang akan digunakan untuk melihat histori tugas Spark, pada Dataproc yang aktif dan telah dihapus di cluster GKE, klik Customize cluster. Kemudian, di kolom Cluster server histori, cari dan pilih cluster PHS Anda. Cluster PHS harus berada di region yang sama dengan Dataproc di cluster virtual GKE.
Klik Create untuk membuat cluster Dataproc. Dataproc Anda di cluster GKE akan muncul dalam daftar di halaman Clusters. Statusnya adalah Provisioning sampai 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 Dataproc di cluster GKE.
Menetapkan variabel lingkungan:
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
Catatan:DP_CLUSTER
: Menetapkan nama cluster virtual Dataproc, yang harus dimulai dengan huruf kecil, diikuti dengan maksimal 54 huruf kecil, angka, atau tanda hubung. Kolom ini dan 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 menata artefak. Jika Anda tidak menentukan bucket, Dataproc di GKE akan membuat bucket staging.DP_POOLNAME
: Nama kumpulan node yang akan dibuat di cluster GKE.PHS_CLUSTER
: (Opsional) Dataproc PHS Server yang akan digunakan untuk melihat histori tugas Spark di Dataproc yang aktif dan dihapus di cluster GKE. Cluster PHS harus berada di region yang sama dengan cluster virtual Dataproc di GKE.
Jalankan perintah:
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}
Catatan:--spark-engine-version
: Versi gambar Spark yang digunakan pada cluster Dataproc. Anda dapat menggunakan ID, seperti3
,3.1
, ataulatest
, atau menentukan versi subminor lengkap, seperti3.1-dataproc-5
.--staging-bucket
: Hapus flag 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 Dataproc on GKE node pool settings yang dipisahkan dengan koma, misalnya:--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
Anda harus menentukan kumpulan nodename
danrole
. Pengaturan kumpulan node lainnya bersifat opsional. Anda dapat menggunakan beberapa flag--pools
untuk menentukan beberapa kumpulan node. Setidaknya satu kumpulan node harus memiliki perandefault
. Semua node pool harus memiliki lokasi yang sama.--setup-workload-identity
: Tanda ini mengaktifkan binding Workload Identity. Binding ini memungkinkan akun layanan Kubernetes (KSA) untuk bertindak sebagai Akun Layanan VM Dataproc (identitas Paket Data) default untuk 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 kumpulan node
- PHS_CLUSTER: Nama cluster Server Histori Persisten (PHS)
- BUCKET: (Opsional) Nama bucket staging. Biarkan 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 Dataproc di cluster virtual GKE berjalan, kirimkan tugas Spark menggunakan Konsol Google Cloud, gcloud CLI, atau jobs.submit
API Dataproc (dengan menggunakan permintaan HTTP langsung atau Library Klien Cloud).
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 salah satu referensi berikut yang digunakan dalam panduan memulai ini yang tidak ingin Anda terus gunakan.
Hapus node pool yang digunakan oleh Dataproc di cluster GKE.