Dokumen ini dimulai dengan mencantumkan alternatif untuk menjalankan tugas Spark di cluster Dataproc di Google Kubernetes Engine. Kemudian, Anda akan melihat cara membuat cluster virtual Dataproc di GKE, lalu menjalankan tugas Spark di cluster tersebut.
Ringkasan opsi
Meskipun Dataproc di GKE menawarkan kontrol yang canggih untuk lingkungan dalam container,Google Cloud juga menyediakan opsi serverless dan terkelola sepenuhnya yang dapat menyederhanakan operasi dan mempercepat pengembangan.
Dataproc di Compute Engine: Untuk pengalaman berbasis VM yang sudah dikenal dengan kontrol maksimum atas lingkungan cluster Anda, Dataproc di Compute Engine sangat ideal untuk memigrasikan workload Hadoop dan Spark yang ada.
Google Cloud Serverless for Apache Spark: Untuk pengalaman tanpa pengoperasian dengan penskalaan otomatis, Serverless for Apache Spark memungkinkan Anda berfokus pada kode. Selain itu, layanan ini ideal untuk pipeline baru dan analisis interaktif.
Untuk perbandingan opsi deployment Spark, lihat Tentukan layanan Spark terbaik.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi pada gcloud CLI, jalankan perintah berikut:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi pada gcloud CLI, jalankan perintah berikut:
gcloud init Anda harus membuat cluster zonal atau regional Google Kubernetes Engine (GKE) standar (bukan autopilot) yang telah mengaktifkan Workload Identity di cluster.
-
Dataproc Editor (
roles/dataproc.editor) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser) di akun layanan default Compute Engine 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.
Buat beberapa cluster virtual. Anda dapat membuat dan menjalankan beberapa cluster virtual di cluster GKE untuk mendapatkan pemanfaatan resource yang lebih baik dengan membagikan node pool di seluruh cluster virtual.
- Setiap cluster virtual:
- dibuat dengan properti terpisah, termasuk versi mesin Spark dan workload identity
- diisolasi dalam namespace GKE terpisah di cluster GKE
- Setiap cluster virtual:
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 Set up 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 Configure Node pools, lalu di panel Node pools, klik Add a 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 di 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
- Dapat dihentikan
- Min: Jumlah node minimum.
- Maks: Jumlah node maksimum. Jumlah node maksimum harus lebih besar dari 0.
- Klik Tambahkan pool untuk menambahkan lebih banyak node pool. 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 dalam melihat histori tugas Spark, di cluster Dataproc di GKE yang aktif dan dihapus, klik Sesuaikan cluster. Kemudian, di kolom History server cluster, telusuri 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 Anda akan muncul dalam daftar di halaman Clusters. Statusnya adalah Provisioning hingga cluster siap digunakan, lalu statusnya berubah menjadi Running.
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: Tetapkan 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 di GKE yang aktif dan dihapus. 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 penyiapan.--pools: Flag ini digunakan untuk menentukan kumpulan node baru atau yang sudah ada yang akan dibuat atau digunakan Dataproc untuk menjalankan beban kerja. Daftar setelan node pool Dataproc on GKE, dipisahkan dengan koma, misalnya: Anda harus menentukan--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
namedanrolenode pool. Setelan kumpulan node lainnya bersifat opsional. Anda dapat menggunakan beberapa tanda--poolsuntuk 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. Binding ini memungkinkan akun layanan Kubernetes (KSA) bertindak sebagai Akun Layanan VM Dataproc (identitas Data Plane) default cluster virtual.
- 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 penyiapan. Biarkan kosong agar Dataproc di GKE membuat bucket staging.
Hapus salah satu resource berikut yang digunakan dalam panduan memulai ini yang tidak ingin Anda gunakan lagi.
Hapus node pool yang digunakan oleh cluster Dataproc di GKE.
Peran yang diperlukan
Peran IAM tertentu diperlukan untuk menjalankan contoh di halaman ini. Bergantung pada kebijakan organisasi, peran ini mungkin sudah diberikan. Untuk memeriksa pemberian peran, lihat Apakah Anda perlu memberikan peran?.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Peran pengguna
Untuk mendapatkan izin yang Anda perlukan untuk membuat cluster Dataproc, minta administrator untuk memberi Anda peran IAM berikut:
Peran akun layanan
Untuk memastikan bahwa akun layanan default Compute Engine memiliki izin yang diperlukan untuk membuat cluster Dataproc, minta administrator Anda untuk memberikan peran IAM Dataproc Worker (roles/dataproc.worker) kepada akun layanan default Compute Engine di project.
Buat cluster virtual Dataproc di 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 worker Dataproc terpisah.
Konsol
gcloud
Tetapkan variabel lingkungan, lalu jalankan perintah
gcloud dataproc clusters gke create
secara lokal atau di Cloud Shell untuk membuat cluster Dataproc di GKE.
REST
Lengkapi
virtualClusterConfig
sebagai bagian dari permintaan
cluster.create
Dataproc API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
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"
}
}
}
Mengirimkan tugas Spark
Setelah cluster virtual Dataproc di GKE berjalan,
kirimkan tugas Spark
menggunakan konsol Google Cloud ,
gcloud CLI, atau
API
jobs.submit
Dataproc (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