Dokumen ini menjelaskan alat dan file yang dapat Anda gunakan untuk memantau dan memecahkan masalah workload batch Managed Service untuk Apache Spark .
Memecahkan masalah workload dari Google Cloud konsol
Jika tugas batch gagal atau memiliki performa yang buruk, langkah pertama yang direkomendasikan adalah membuka halaman Batch details dari halaman Batches di Google Cloud konsol.
Menggunakan tab Summary: Hub pemecahan masalah Anda
Tab Summary, yang dipilih secara default saat halaman Batch details terbuka, menampilkan metrik penting dan log yang difilter untuk membantu Anda membuat penilaian awal yang cepat tentang kesehatan batch. Setelah penilaian awal ini, Anda dapat melakukan analisis yang lebih mendalam menggunakan alat yang lebih khusus yang tersedia dari halaman Batch details, seperti Spark UI, Logs Explorer, dan Gemini Cloud Assist.
Sorotan metrik batch
Tab Summary di halaman Batch details menyertakan diagram yang menampilkan nilai metrik workload batch penting. Diagram metrik diisi setelah selesai, dan menawarkan indikasi visual tentang potensi masalah seperti pertentangan resource, kecondongan data, atau tekanan memori.

Tabel berikut mencantumkan metrik workload Spark yang ditampilkan di halaman Batch details di Google Cloud konsol, dan menjelaskan bagaimana nilai metrik dapat memberikan insight tentang status dan performa workload.
| Metrik | Apa yang ditampilkan? |
|---|---|
| Metrik di tingkat Eksekutor | |
| Rasio Waktu GC JVM terhadap Waktu Proses | Metrik ini menunjukkan rasio waktu pembersihan sampah memori (GC) JVM terhadap waktu proses per eksekutor. Rasio yang tinggi dapat menunjukkan kebocoran memori dalam tugas yang berjalan pada eksekutor tertentu atau struktur data yang tidak efisien, yang dapat menyebabkan churn objek yang tinggi. |
| Byte Disk yang Tumpah | Metrik ini menunjukkan jumlah total byte disk yang tumpah di berbagai eksekutor. Jika eksekutor menunjukkan byte disk yang tumpah tinggi, hal ini dapat menunjukkan kecondongan data. Jika metrik meningkat dari waktu ke waktu, hal ini dapat menunjukkan bahwa ada tahap dengan tekanan memori atau kebocoran memori. |
| Byte yang Dibaca dan Ditulis | Metrik ini menunjukkan byte yang ditulis dibandingkan dengan byte yang dibaca per eksekutor. Perbedaan besar dalam byte yang dibaca atau ditulis dapat menunjukkan skenario saat gabungan yang direplikasi menyebabkan amplifikasi data pada eksekutor tertentu. |
| Data yang Dibaca dan Ditulis | Metrik ini menunjukkan data yang dibaca dan ditulis per eksekutor. Jumlah data yang dibaca yang besar dengan jumlah data yang ditulis yang rendah dapat menunjukkan bottleneck dalam logika pemrosesan pada eksekutor tertentu, yang menyebabkan data dibaca saat menunggu. Eksekutor yang secara konsisten tertinggal dalam pembacaan dan penulisan dapat menunjukkan pertentangan resource pada node atau inefisiensi kode khusus eksekutor tersebut. |
| Rasio Waktu Tulis Shuffle terhadap Waktu Proses | Metrik ini menunjukkan jumlah waktu yang dihabiskan eksekutor dalam runtime shuffle dibandingkan dengan runtime keseluruhan. Jika nilai ini tinggi untuk beberapa eksekutor, hal ini dapat menunjukkan kecondongan data atau serialisasi data yang tidak efisien. Anda dapat mengidentifikasi tahap dengan waktu tulis shuffle yang lama di Spark UI. Cari tugas outlier dalam tahap tersebut yang membutuhkan waktu lebih lama dari waktu rata-rata untuk diselesaikan. Periksa apakah eksekutor dengan waktu tulis shuffle yang tinggi juga menunjukkan aktivitas I/O disk yang tinggi. Serialisasi yang lebih efisien dan langkah-langkah partisi tambahan dapat membantu. Penulisan data yang sangat besar dibandingkan dengan pembacaan data dapat menunjukkan duplikasi data yang tidak diinginkan karena gabungan yang tidak efisien atau transformasi yang salah. |
| Metrik di tingkat Aplikasi | |
| Progres Tahap | Metrik ini menunjukkan jumlah tahap dalam tahap yang gagal, menunggu, dan berjalan. Jumlah stage yang gagal atau menunggu yang besar dapat menunjukkan kecondongan data. Periksa partisi data, dan debug alasan kegagalan tahap menggunakan tab Stages di Spark UI. |
| Eksekutor Spark Batch | Metrik ini menunjukkan jumlah eksekutor yang mungkin diperlukan dibandingkan dengan jumlah eksekutor yang berjalan. Perbedaan besar antara eksekutor yang diperlukan dan yang berjalan dapat menunjukkan masalah penskalaan otomatis. |
| Metrik di tingkat VM | |
| Memori Digunakan | Metrik ini menunjukkan persentase memori VM yang digunakan. Jika persentase master tinggi, hal ini dapat menunjukkan bahwa driver mengalami tekanan memori. Untuk node VM lainnya, persentase yang tinggi dapat menunjukkan bahwa eksekutor kehabisan memori, yang dapat menyebabkan tumpahan disk yang tinggi dan runtime workload yang lebih lambat. Gunakan Spark UI untuk menganalisis eksekutor guna memeriksa waktu GC yang tinggi dan kegagalan tugas yang tinggi. Debug juga kode Spark untuk caching set data besar dan siaran variabel yang tidak perlu. |
Log tugas
Halaman Batch details menyertakan bagian Job logs yang mencantumkan peringatan dan error yang difilter dari log tugas (workload batch). Fitur ini memungkinkan identifikasi cepat masalah penting tanpa perlu mengurai file log yang luas secara manual. Anda dapat memilih Severity log (misalnya, Error) dari menu drop-down dan menambahkan Filter teks untuk mempersempit hasil. Untuk melakukan analisis yang lebih mendalam, klik ikon View in Logs Explorer
untuk membuka log batch yang dipilih di Logs Explorer.
Contoh: Logs Explorer terbuka setelah memilih Errors dari pemilih Severity
di halaman Batch details di Google Cloud konsol.

Spark UI
Spark UI mengumpulkan detail eksekusi Apache Spark dari workload batch Managed Service untuk Apache Spark. Tidak ada biaya untuk fitur Spark UI, yang diaktifkan secara default.
Data yang dikumpulkan oleh fitur Spark UI disimpan selama 90 hari. Anda dapat menggunakan antarmuka web ini untuk memantau dan men-debug workload Spark tanpa harus membuat Persistent History Server.
Peran dan izin Identity and Access Management yang diperlukan
Izin berikut diperlukan untuk menggunakan fitur Spark UI dengan workload batch.
Izin pengumpulan data:
dataproc.batches.sparkApplicationWrite. Izin ini harus diberikan ke akun layanan yang menjalankan workload batch. Izin ini disertakan dalam peranManaged Service for Apache Spark Worker, yang secara otomatis diberikan ke akun layanan default Compute Engine yang digunakan Managed Service untuk Apache Spark secara default (lihat Akun layanan Managed Service untuk Apache Spark). Namun, jika Anda menentukan akun layanan kustom untuk workload batch, Anda harus menambahkan izin ke akun layanan tersebut (biasanya, dengan memberikan peran Managed Service untuk Apache Spark ).dataproc.batches.sparkApplicationWriteWorkerIzin akses Spark UI:
dataproc.batches.sparkApplicationRead. Izin ini harus diberikan kepada pengguna untuk mengakses Spark UI di Google Cloud konsol. Izin ini disertakan dalam peranDataproc Viewer,Dataproc EditordanDataproc Administrator. Untuk membuka Spark UI di Google Cloud konsol, Anda harus memiliki salah satu peran ini atau memiliki peran kustom yang menyertakan izin ini.
Membuka Spark UI
Halaman Spark UI tersedia di Google Cloud konsol workload batch.
Buka halaman Managed Service untuk Apache Spark interactive sessions.
Klik Batch ID untuk membuka halaman Batch details.
Klik View Spark UI di menu atas.
Tombol View Spark UI dinonaktifkan dalam kasus berikut:
- Jika izin yang diperlukan tidak diberikan
- Jika Anda menghapus centang pada kotak Enable Spark UI di halaman Batch details
- Jika Anda menetapkan properti
spark.dataproc.appContext.enabledkefalsesaat Anda mengirimkan workload batch
Log Managed Service untuk Apache Spark
Logging diaktifkan secara default di Managed Service untuk Apache Spark, dan log workload tetap ada setelah workload selesai. Managed Service untuk Apache Spark mengumpulkan log workload di Cloud Logging.
Anda dapat mengakses log Managed Service untuk Apache Spark di bagian resource Cloud Dataproc Batch di Logs Explorer.
Mengkueri log Managed Service untuk Apache Spark
Logs Explorer di Google Cloud konsol menyediakan panel kueri untuk membantu Anda membuat kueri guna memeriksa log workload batch. Berikut adalah langkah-langkah yang dapat Anda ikuti untuk membuat kueri guna memeriksa log workload batch:
- Project Anda saat ini dipilih. Anda dapat mengklik Refine scope Project untuk memilih project lain.
Tentukan kueri log batch.
Gunakan menu filter untuk memfilter workload batch.
Di bagian All resources, pilih resource Cloud Managed Service untuk Apache Spark Batch.
Di panel Select resource, pilih LOCATION batch, lalu BATCH ID. Parameter batch ini tercantum di halaman **Batches** Managed Service untuk Apache Spark di Google Cloud konsol.
Klik Apply.
Di bagian Select log names. masukkan
dataproc.googleapis.comdi kotak Search log names untuk membatasi jenis log yang akan dikueri. Pilih satu atau beberapa nama file log yang tercantum.
Gunakan editor kueri untuk memfilter log khusus VM.
Tentukan jenis resource dan nama resource VM seperti yang ditunjukkan dalam contoh berikut:
Catatan:resource.type="cloud_dataproc_batch" labels."dataproc.googleapis.com/resource_name"="VM_NAME_PREFIX-BATCH_UUID-VM_SUFFIX"
- VM_NAME_PREFIX: Gunakan
gdpic-rmuntuk workload batch yang berjalan di Managed Service untuk Apache Spark3.0dan versi runtime yang lebih baru; gunakangdpic-srvls-batchuntuk workload batch yang berjalan di versi runtime yang lebih lama. - BATCH_UUID: UUID batch tercantum di halaman Batch details
di konsol, yang terbuka saat Anda mengklik
Batch ID di halaman Batches. Google Cloud
Log batch juga mencantumkan UUID batch dalam nama resource VM. Berikut adalah contoh dari batch driver.log:
- VM_NAME_PREFIX: Gunakan
Klik Run query.
Jenis log dan contoh kueri Managed Service untuk Apache Spark
Daftar berikut menjelaskan berbagai jenis log Managed Service untuk Apache Spark dan memberikan contoh kueri Logs Explorer untuk setiap jenis log.
dataproc.googleapis.com/output: File log ini berisi output workload batch. Managed Service untuk Apache Spark melakukan streaming output batch ke namespaceoutput, dan menetapkan nama file keJOB_ID.driver.log.Contoh kueri Logs Explorer untuk log output:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
dataproc.googleapis.com/spark: Namespacesparkmenggabungkan log Spark untuk daemon dan eksekutor yang berjalan di VM master cluster dan pekerja cluster Managed Service untuk Apache Spark. Setiap entri log menyertakan label komponenmaster,worker, atauexecutoruntuk mengidentifikasi sumber log, sebagai berikut:executor: Log dari eksekutor kode pengguna. Biasanya, ini adalah log terdistribusi.master: Log dari master pengelola resource mandiri Spark, yang mirip dengan logResourceManagerYARN Managed Service untuk Apache Spark.worker: Log dari pekerja pengelola resource mandiri Spark, yang mirip dengan logNodeManagerYARN Managed Service untuk Apache Spark.
Contoh kueri Logs Explorer untuk semua log di namespace
spark:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
Contoh kueri Logs Explorer untuk log komponen mandiri Spark di namespace
spark:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark" jsonPayload.component="COMPONENT"
dataproc.googleapis.com/startup: Namespacestartupmenyertakan log startup batch (cluster) . Log skrip inisialisasi apa pun disertakan. Komponen diidentifikasi berdasarkan label, misalnya: Contoh kueri Logs Explorer untuk log startup log pada VM tertentu:startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup" labels."dataproc.googleapis.com/resource_name"="VM_NAME_PREFIX-BATCH_UUID-VM_SUFFIX"
dataproc.googleapis.com/agent: Namespaceagentmenggabungkan log agen Managed Service untuk Apache Spark. Setiap entri log menyertakan label nama file yang mengidentifikasi sumber log.Contoh kueri Logs Explorer untuk log agen yang dihasilkan oleh worker VM tertentu:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent" labels."dataproc.googleapis.com/resource_name"="VM_NAME_PREFIX-BATCHUUID-wWORKER#"
dataproc.googleapis.com/autoscaler: Namespaceautoscalermenggabungkan log autoscaler Managed Service untuk Apache Spark.Contoh kueri Logs Explorer untuk log autoscaler yang dihasilkan oleh worker VM tertentu:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler" labels."dataproc.googleapis.com/resource_name"="VM_NAME_PREFIX-BATCHUUID-wWORKER#"
Untuk mengetahui informasi selengkapnya, lihat Log Managed Service untuk Apache Spark.
Untuk mengetahui informasi tentang log audit Managed Service untuk Apache Spark, lihat Logging audit Managed Service untuk Apache Spark.
Metrik workload
Managed Service untuk Apache Spark menyediakan metrik batch dan Spark yang dapat Anda lihat dari Metrics Explorer atau halaman Batch details di Google Cloud konsol.
Metrik batch
Metrik resource batch Managed Service untuk Apache Spark memberikan insight tentang resource batch, seperti jumlah eksekutor batch. Metrik batch diawali dengan dataproc.googleapis.com/batch.

Metrik Spark
Secara default, Managed Service untuk Apache Spark mengaktifkan pengumpulan metrik Spark yang tersedia, kecuali jika Anda menggunakan properti pengumpulan metrik Spark untuk menonaktifkan atau mengganti pengumpulan satu atau beberapa metrik Spark.
Metrik Spark yang tersedia
mencakup metrik driver dan eksekutor Spark, serta metrik sistem. Metrik Spark yang tersedia diawali dengan custom.googleapis.com/.

Menyiapkan pemberitahuan metrik
Anda dapat membuat pemberitahuan metrik Managed Service untuk Apache Spark untuk menerima pemberitahuan tentang masalah workload.
Membuat diagram
Anda dapat membuat diagram yang memvisualisasikan metrik workload menggunakan
Metrics Explorer di
Google Cloud konsol. Misalnya, Anda dapat membuat diagram untuk menampilkan disk:bytes_used, lalu memfilter berdasarkan batch_id.
Cloud Monitoring
Monitoring menggunakan metadata dan metrik workload untuk memberikan insight tentang kesehatan dan performa workload Managed Service untuk Apache Spark. Metrik workload mencakup metrik Spark, metrik batch, dan metrik operasi.
Anda dapat menggunakan Cloud Monitoring di Google Cloud konsol untuk menjelajahi metrik, menambahkan diagram, membuat dasbor, dan membuat pemberitahuan.
Membuat dasbor
Anda dapat membuat dasbor untuk memantau workload menggunakan metrik dari beberapa project dan produk yang berbeda Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola dasbor kustom.
Persistent History Server
Managed Service untuk Apache Spark membuat resource komputasi yang diperlukan untuk menjalankan workload, menjalankan workload pada resource tersebut, lalu menghapus resource saat workload selesai. Metrik dan peristiwa workload tidak tetap ada setelah workload selesai. Namun, Anda dapat menggunakan Persistent History Server (PHS) untuk menyimpan histori aplikasi workload (log peristiwa) di Cloud Storage.
Untuk menggunakan PHS dengan workload batch, lakukan hal berikut:
Buat Persistent History Server (PHS) Managed Service untuk Apache Spark.
Tentukan PHS Anda saat Anda mengirimkan workload.
Gunakan Component Gateway untuk terhubung ke PHS guna melihat detail aplikasi, tahap penjadwal, detail tingkat tugas, serta informasi lingkungan dan eksekutor.
Penyetelan otomatis
- Mengaktifkan penyetelan otomatis untuk Managed Service untuk Apache Spark: Anda dapat mengaktifkan Penyetelan Otomatis untuk Managed Service untuk Apache Spark saat Anda mengirimkan setiap workload batch Spark berulang menggunakan Google Cloud konsol, gcloud CLI, atau Managed Service untuk Apache Spark API.
Konsol
Lakukan langkah-langkah berikut untuk mengaktifkan penyetelan otomatis pada setiap workload batch Spark berulang:
Di Google Cloud konsol, buka halaman Batches Managed Service untuk Apache Spark.
Untuk membuat workload batch, klik Create.
Di bagian Container, isi nama Cohort, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Analisis yang dibantu Gemini diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama cohort ini. Misalnya, tentukan
TPCH-Query1sebagai nama cohort untuk workload terjadwal yang menjalankan kueri TPC-H harian.Isi bagian lain halaman Create batch sesuai kebutuhan, lalu klik Submit. Untuk mengetahui informasi selengkapnya, lihat Mengirimkan workload batch.
gcloud
Jalankan perintah gcloud CLI
gcloud dataproc batches submit
berikut secara lokal di jendela terminal atau di Cloud Shell
untuk mengaktifkan penyetelan otomatis pada setiap workload batch Spark berulang:
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ other arguments ...
Ganti kode berikut:
- COMMAND: jenis workload Spark, seperti
Spark,PySpark,Spark-Sql, atauSpark-R. - REGION: region tempat workload Anda akan berjalan.
- COHORT: nama cohort, yang
mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang.
Analisis yang dibantu Gemini diterapkan ke workload kedua dan berikutnya yang dikirimkan
dengan nama cohort ini. Misalnya, tentukan
TPCH Query 1sebagai nama cohort untuk workload terjadwal yang menjalankan kueri TPC-H harian.
API
Sertakan RuntimeConfig.cohort
nama dalam permintaan batches.create
untuk mengaktifkan penyetelan otomatis pada setiap workload batch Spark
berulang. Penyetelan otomatis diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama cohort ini. Misalnya, tentukan TPCH-Query1 sebagai nama cohort untuk workload terjadwal yang menjalankan kueri TPC-H harian.
Contoh:
...
runtimeConfig:
cohort: TPCH-Query1
...