Dokumen ini menjelaskan cara memantau dan memecahkan masalah Dataproc Serverless untuk beban kerja batch Spark menggunakan UI Spark.
UI Spark
UI Spark mengumpulkan detail eksekusi Apache Spark dari Dataproc Serverless untuk workload batch Spark. Fitur UI Spark tidak dikenai biaya, yang diaktifkan secara default.
Data yang dikumpulkan oleh fitur UI Spark dipertahankan selama 90 hari. Anda dapat menggunakan antarmuka web ini untuk memantau dan men-debug workload Spark tanpa harus membuat Persistent History Server.
Izin dan peran 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 beban kerja batch. Izin ini disertakan dalam peranDataproc Worker
, yang otomatis diberikan ke akun layanan default Compute Engine yang digunakan Dataproc Serverless secara default (lihat Akun layanan Dataproc Serverless). Namun, jika Anda menentukan akun layanan kustom untuk beban kerja batch, Anda harus menambahkan izindataproc.batches.sparkApplicationWrite
ke akun layanan tersebut (biasanya, dengan memberikan peranWorker
Dataproc ke akun layanan).Izin akses UI Spark:
dataproc.batches.sparkApplicationRead
. Izin ini harus diberikan kepada pengguna untuk mengakses UI Spark di konsol Google Cloud. Izin ini disertakan dalam peranDataproc Viewer
,Dataproc Editor
, danDataproc Administrator
. Untuk membuka UI Spark di konsol Google Cloud, Anda harus memiliki salah satu peran ini atau memiliki peran kustom yang menyertakan izin ini.
Membuka UI Spark
Halaman UI Spark tersedia di konsol Google Cloud untuk workload batch Spark.
Buka halaman Sesi interaktif Dataproc Serverless.
Klik ID Batch untuk membuka halaman detail batch.
Klik Lihat UI Spark di menu atas.
Tombol Lihat UI Spark 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.enabled
kefalse
saat mengirimkan beban kerja batch
Batasan
UI Spark tidak mendukung workload Dataproc Serverless berikut:
Server Histori Persisten
Dataproc Serverless untuk Spark membuat resource komputasi yang diperlukan untuk menjalankan workload, menjalankan workload pada resource tersebut, lalu menghapus resource saat workload selesai. Metrik dan peristiwa beban kerja tidak akan dipertahankan setelah beban kerja selesai. Namun, Anda dapat menggunakan Persistent History Server (PHS) untuk mempertahankan histori aplikasi workload (log peristiwa) di Cloud Storage.
Untuk menggunakan PHS dengan beban kerja batch, lakukan langkah berikut:
Tentukan PHS Anda saat mengirimkan workload.
Gunakan Component Gateway untuk terhubung ke PHS guna melihat detail aplikasi, tahap penjadwal, detail tingkat tugas, serta informasi lingkungan dan eksekutor.
Log Dataproc Serverless untuk Spark
Logging diaktifkan secara default di Dataproc Serverless untuk Spark, dan log beban kerja tetap ada setelah beban kerja selesai. Dataproc Serverless untuk Spark mengumpulkan log beban kerja di Cloud Logging.
Anda dapat mengakses log Dataproc Serverless for Spark di bagian resource Cloud Dataproc Batch
di Logs Explorer.
Membuat kueri log Dataproc Serverless untuk Spark
Logs Explorer di konsol Google Cloud 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 Pertajam cakupan Project untuk memilih project lain.
Menentukan kueri log batch.
Gunakan menu filter untuk memfilter beban kerja batch.
Di bagian Semua resource, pilih resource Cloud Dataproc Batch.
Di panel Select resource, pilih LOCATION batch, lalu BATCH ID. Parameter batch ini tercantum di halaman Batches Dataproc di konsol Google Cloud.
Klik Terapkan.
Di bagian Select log names, masukkan
dataproc.googleapis.com
di 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 pada contoh berikut:
Catatan:resource.type="cloud_dataproc_batch" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
- BATCH_UUID: UUID batch tercantum di halaman Detail batch di konsol Google Cloud, yang terbuka saat Anda mengklik ID Batch di halaman Batches.
Log batch juga mencantumkan UUID batch dalam nama resource VM. Berikut adalah contoh dari driver.log batch:
Klik Run query.
Jenis log dan contoh kueri Dataproc Serverless untuk Spark
Daftar berikut menjelaskan berbagai jenis log Dataproc Serverless dan memberikan contoh kueri Logs Explorer untuk setiap jenis log.
dataproc.googleapis.com/output
: File log ini berisi output beban kerja batch. Dataproc Serverless for 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
: Namespacespark
menggabungkan log Spark untuk daemon dan eksekutor yang berjalan di VM master dan pekerja cluster Dataproc. Setiap entri log menyertakan label komponenmaster
,worker
, atauexecutor
untuk 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 logResourceManager
YARN Compute Engine Dataproc.worker
: Log dari pekerja pengelola resource mandiri Spark, yang mirip dengan logNodeManager
YARN Compute Engine Dataproc.
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
: Namespacestartup
menyertakan log startup batch (cluster). Semua log skrip inisialisasi akan disertakan. Komponen diidentifikasi berdasarkan label, misalnya: Contoh kueri Logs Explorer untuk log startup log di 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"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
dataproc.googleapis.com/agent
: Namespaceagent
menggabungkan log agen Dataproc. Setiap entri log menyertakan label nama file yang mengidentifikasi sumber log.Contoh kueri Logs Explorer untuk log agen yang dihasilkan oleh VM pekerja yang ditentukan:
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"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
dataproc.googleapis.com/autoscaler
: Namespaceautoscaler
menggabungkan log autoscaler Dataproc Serverless untuk Spark.Contoh kueri Logs Explorer untuk log agen yang dihasilkan oleh VM pekerja yang ditentukan:
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"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
Untuk informasi selengkapnya, lihat Log Dataproc.
Log audit Dataproc Serverless
Untuk informasi tentang log audit Dataproc Serverless, lihat Logging audit Dataproc.
Metrik beban kerja
Secara default, Dataproc Serverless for 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.
Anda dapat melihat metrik beban kerja dari halaman Metrics Explorer atau Batch details di konsol Google Cloud.
Metrik batch
Metrik resource batch
Dataproc memberikan insight tentang resource batch,
seperti jumlah eksekutor batch. Metrik batch diawali dengan
dataproc.googleapis.com/batch
.
Metrik Spark
Metrik Spark yang tersedia
mencakup metrik eksekutor dan driver Spark, serta metrik sistem. Metrik Spark yang tersedia diawali dengan custom.googleapis.com/
.
Menyiapkan pemberitahuan metrik
Anda dapat membuat pemberitahuan metrik Dataproc untuk menerima pemberitahuan tentang masalah beban kerja.
Membuat diagram
Anda dapat membuat diagram yang memvisualisasikan metrik beban kerja menggunakan Metrics Explorer di konsol Google Cloud. Misalnya, Anda dapat membuat diagram untuk menampilkan disk:bytes_used
, lalu memfilter menurut batch_id
.
Cloud Monitoring
Pemantauan menggunakan metadata dan metrik beban kerja untuk memberikan insight tentang kondisi dan performa beban kerja Dataproc Serverless untuk Spark. Metrik beban kerja mencakup metrik Spark, metrik batch, dan metrik operasi.
Anda dapat menggunakan Cloud Monitoring di konsol Google Cloud untuk menjelajahi metrik, menambahkan diagram, membuat dasbor, dan membuat pemberitahuan.
Membuat dasbor
Anda dapat membuat dasbor untuk memantau beban kerja menggunakan metrik dari beberapa project dan produk Google Cloud yang berbeda. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola dasbor kustom.
Pemecahan masalah lanjutan (Pratinjau)
Bagian ini membahas fitur pemecahan masalah lanjutan (Pratinjau) yang tersedia di konsol Google Cloud. Fitur ini mencakup pemecahan masalah dengan bantuan Gemini untuk Dataproc Serverless, yang merupakan bagian dari penawaran Gemini in BigQuery.
Akses ke fitur pratinjau
Untuk mendaftar ke rilis pratinjau fitur pemecahan masalah lanjutan, lengkapi dan kirimkan formulir Pendaftaran Pra-GA Gemini di BigQuery. Setelah formulir disetujui, project yang tercantum dalam formulir akan memiliki akses ke fitur pratinjau.
Pratinjau harga
Tidak ada biaya tambahan untuk berpartisipasi dalam pratinjau. Tagihan akan berlaku untuk fitur pratinjau berikut saat fitur tersebut tersedia secara umum (GA):
Pemberitahuan awal tentang tagihan GA akan dikirim ke alamat email yang Anda berikan di formulir pendaftaran pratinjau.
Persyaratan fitur
Pendaftaran: Anda harus mendaftar untuk fitur ini.
Izin: Anda harus memiliki izin
dataproc.batches.analyze
.Jika memiliki peran
roles/dataproc.admin
,roles/dataproc.editor
, atauroles/dataproc.viewer
yang telah ditetapkan, Anda memiliki izin yang diperlukan. Anda tidak perlu melakukan tindakan lebih lanjut.Jika Anda menggunakan peran kustom untuk mengakses layanan Dataproc, peran kustom tersebut harus memiliki izin
dataproc.batches.analyze
. Anda dapat menggunakan gcloud CLI untuk menambahkan izin, seperti yang ditunjukkan dalam perintah berikut, yang menambahkan izin di level project:
gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \ --add-permissions="dataproc.batches.analyze"
Mengaktifkan pemecahan masalah dengan bantuan Gemini untuk Dataproc Serverless: Anda mengaktifkan pemecahan masalah dengan bantuan Gemini untuk Dataproc Serverless saat mengirimkan setiap workload batch Spark berulang menggunakan Konsol Google Cloud, gcloud CLI, atau Dataproc API. Setelah fitur ini diaktifkan pada beban kerja batch berulang, Dataproc akan menyimpan salinan log beban kerja selama 30 hari, dan menggunakan data log tersimpan untuk memberikan pemecahan masalah yang dibantu Gemini untuk beban kerja. Untuk informasi tentang konten log workload Spark, lihat Log Dataproc Serverless untuk Spark.
Konsol
Lakukan langkah-langkah berikut untuk mengaktifkan pemecahan masalah dengan bantuan Gemini pada setiap workload batch Spark berulang:
Di konsol Google Cloud, buka halaman Batches Dataproc.
Untuk membuat beban kerja batch, klik Buat.
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 selanjutnya yang dikirimkan dengan nama kelompok ini. Misalnya, tentukan
TPCH-Query1
sebagai nama kelompok untuk beban kerja terjadwal yang menjalankan kueri TPC-H harian.Isi bagian lain di halaman Create batch sesuai kebutuhan, lalu klik Submit. Untuk informasi selengkapnya, lihat Mengirimkan workload batch.
gcloud
Jalankan perintah gcloud dataproc batches submit
gcloud CLI berikut secara lokal di jendela terminal atau di Cloud Shell untuk mengaktifkan pemecahan masalah dengan bantuan Gemini pada setiap beban kerja batch Spark berulang:
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ other arguments ...
Ganti kode berikut:
- COMMAND: jenis beban kerja Spark, seperti
Spark
,PySpark
,Spark-Sql
, atauSpark-R
. - REGION: region tempat workload Anda akan berjalan.
- COHORT: nama kelompok, yang
mengidentifikasi batch sebagai salah satu dari serangkaian beban kerja berulang.
Analisis yang dibantu Gemini diterapkan ke workload kedua dan selanjutnya yang dikirimkan
dengan nama kelompok ini. Misalnya, tentukan
TPCH Query 1
sebagai nama kelompok untuk beban kerja terjadwal yang menjalankan kueri TPC-H harian.
API
Sertakan nama RuntimeConfig.cohort
dalam permintaan batches.create untuk mengaktifkan pemecahan masalah dengan bantuan Gemini pada setiap beban kerja batch Spark berulang. Analisis yang dibantu Gemini diterapkan ke workload kedua dan selanjutnya yang dikirimkan
dengan nama kelompok ini. Misalnya, tentukan TPCH-Query1
sebagai nama kelompok untuk beban kerja terjadwal yang menjalankan kueri TPC-H harian.
Contoh:
...
runtimeConfig:
cohort: TPCH-Query1
...
Pemecahan masalah dengan bantuan Gemini untuk Dataproc Serverless
Fitur pratinjau pemecahan masalah dengan bantuan Gemini berikut tersedia di halaman daftar Detail batch dan Batch di konsol Google Cloud.
Tab Investigasi: Tab Investigasi di halaman Detail batch menyediakan bagian Ringkasan Kondisi (Pratinjau) dengan panel pemecahan masalah berbantuan Gemini berikut:
- Apa yang di-autotune? Jika Anda mengaktifkan penyesuaian otomatis di satu atau beberapa beban kerja, panel ini akan menampilkan perubahan penyesuaian otomatis terbaru yang diterapkan ke beban kerja yang berjalan, selesai, dan gagal.
- Apa yang terjadi sekarang? dan Apa yang dapat saya lakukan? Klik Minta Gemini untuk meminta rekomendasi guna membantu memperbaiki workload yang gagal atau meningkatkan workload yang berhasil tetapi lambat.
Jika Anda mengklik Tanya Gemini, Gemini untuk Google Cloud akan membuat ringkasan error, anomali, atau sorotan dari log workload, metrik Spark, dan peristiwa Spark. Gemini untuk Google Cloud juga dapat menampilkan daftar langkah yang direkomendasikan yang dapat Anda lakukan untuk memperbaiki workload yang gagal atau meningkatkan performa workload yang berhasil, tetapi lambat.
Kolom pemecahan masalah dengan bantuan Gemini: Sebagai bagian dari rilis pratinjau, halaman daftar Batch Dataproc di konsol Google Cloud menyertakan kolom
What was Autotuned
,What is happening now?
, danWhat can I do about it?
.Tombol Minta bantuan Gemini ditampilkan dan diaktifkan hanya jika batch yang telah selesai berada dalam status
Failed
,Cancelled
, atauSucceeded
. Jika Anda mengklik Tanya Gemini, Gemini untuk Google Cloud akan menghasilkan ringkasan error, anomali, atau sorotan dari log beban kerja, metrik Spark, dan peristiwa Spark. Gemini untuk Google Cloud juga dapat menampilkan daftar langkah yang direkomendasikan yang dapat Anda lakukan untuk memperbaiki workload yang gagal atau meningkatkan performa workload yang berhasil, tetapi lambat.
Sorotan metrik batch
Sebagai bagian dari rilis pratinjau, halaman Detail batch di konsol Google Cloud menyertakan diagram yang menampilkan nilai metrik beban kerja batch yang penting. Diagram metrik diisi dengan nilai setelah batch selesai.
Tabel berikut mencantumkan metrik beban kerja Spark yang ditampilkan di halaman Batch details di konsol Google Cloud, dan menjelaskan bagaimana nilai metrik dapat memberikan insight tentang status dan performa beban kerja.
Metrik | Apa yang ditampilkan? |
---|---|
Metrik di tingkat Eksekutor | |
Rasio Waktu GC JVM ke Runtime | Metrik ini menunjukkan rasio waktu GC (pengumpulan sampah) JVM terhadap runtime 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 Tumpah | Metrik ini menunjukkan jumlah total byte disk yang ditransfer ke berbagai eksekutor. Jika eksekutor menunjukkan byte disk yang ditransfer tinggi, hal ini dapat menunjukkan penyimpangan 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 versus byte yang dibaca per eksekutor. Perbedaan besar dalam byte yang dibaca atau ditulis dapat menunjukkan skenario saat join yang direplikasi menyebabkan amplifikasi data pada eksekutor tertentu. |
Data yang Dibaca dan Ditulis | Metrik ini menunjukkan data yang dibaca dan ditulis per eksekutor. Banyaknya data yang dibaca dengan sedikit data yang ditulis dapat menunjukkan bottleneck dalam logika pemrosesan pada eksekutor tertentu, sehingga data dibaca saat menunggu. Eksekutor yang secara konsisten tertinggal dalam operasi baca dan tulis dapat menunjukkan pertentangan resource pada node tersebut atau inefisiensi kode khusus eksekutor. |
Rasio Waktu Tulis Acak 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 penyimpangan data atau serialisasi data yang tidak efisien. Anda dapat mengidentifikasi tahap dengan waktu penulisan shuffle yang lama di UI Spark. Cari tugas outlier dalam tahap tersebut yang memerlukan waktu lebih dari rata-rata untuk diselesaikan. Periksa apakah eksekutor dengan waktu operasi tulis shuffle yang tinggi juga menunjukkan aktivitas I/O disk yang tinggi. Serialisasi yang lebih efisien dan langkah partisi tambahan mungkin dapat membantu. Operasi tulis data yang sangat besar dibandingkan dengan operasi baca data dapat menunjukkan duplikasi data yang tidak diinginkan karena join 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. Sejumlah besar tahap yang gagal atau menunggu dapat menunjukkan penyimpangan data. Periksa partisi data, dan debug alasan kegagalan tahap menggunakan tab Stages di UI Spark. |
Batch Spark Executor | Metrik ini menunjukkan jumlah eksekutor yang mungkin diperlukan dibandingkan dengan jumlah eksekutor yang berjalan. Perbedaan yang besar antara eksekutor yang diperlukan dan yang berjalan dapat menunjukkan masalah penskalaan otomatis. |
Metrik di tingkat VM | |
Memori yang 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 kebocoran disk yang tinggi dan runtime beban kerja yang lebih lambat. Gunakan UI Spark untuk menganalisis eksekutor guna memeriksa waktu GC yang tinggi dan kegagalan tugas yang tinggi. Selain itu, debug kode Spark untuk caching set data besar dan siaran variabel yang tidak perlu. |
Log tugas
Sebagai bagian dari rilis pratinjau, halaman Batch details di konsol Google Cloud mencantumkan log tugas (workload batch). Log tersebut mencakup peringatan dan error yang difilter dari output beban kerja dan log Spark. Anda dapat memilih log Severity, menambahkan Filter, lalu mengklik ikon View in Logs Explorer untuk membuka log batch yang dipilih di Logs Explorer.
Contoh: Logs Explorer akan terbuka setelah memilih Errors
dari pemilih Keparahan di halaman Batch details di konsol Google Cloud.