Memantau dan memecahkan masalah workload batch Dataproc Serverless

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, yang diaktifkan secara default, tidak dikenai biaya.

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 peran Dataproc 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 izin dataproc.batches.sparkApplicationWrite ke akun layanan tersebut (biasanya, dengan memberikan peran Worker 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 peran Dataproc Viewer, Dataproc Editor, dan Dataproc 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.

  1. Buka halaman Sesi interaktif Dataproc Serverless.

    Buka Dataproc Batches

  2. Klik ID Batch untuk membuka halaman detail batch.

  3. Klik Lihat UI Spark di menu atas.

Tombol Lihat UI Spark dinonaktifkan dalam kasus berikut:

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:

  1. Buat Server Histori Permanen (PHS) Dataproc.

  2. Tentukan PHS Anda saat mengirimkan workload.

  3. 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 workload tetap ada setelah workload selesai. Dataproc Serverless untuk Spark mengumpulkan log beban kerja di Cloud Logging. Anda dapat mengakses log Dataproc Serverless untuk 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:

  1. Buka Logs Explorer

  2. Project Anda saat ini dipilih. Anda dapat mengklik Pertajam cakupan Project untuk memilih project lain.
  3. Menentukan kueri log batch.

    • Gunakan menu filter untuk memfilter beban kerja batch.

      1. Di bagian Semua resource, pilih resource Cloud Dataproc Batch.

        1. Di panel Select resource, pilih LOCATION batch, lalu BATCH ID. Parameter batch ini tercantum di halaman Batches Dataproc di konsol Google Cloud.

        2. Klik Terapkan.

        3. 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.

      1. Tentukan jenis resource dan nama resource VM seperti yang ditunjukkan pada contoh berikut:

        resource.type="cloud_dataproc_batch"
        labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
        
        Catatan:

        • 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:

  4. 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.

  1. dataproc.googleapis.com/output: File log ini berisi output beban kerja batch. Dataproc Serverless for Spark melakukan streaming output batch ke namespace output, dan menetapkan nama file ke JOB_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"
    

  2. dataproc.googleapis.com/spark: Namespace spark menggabungkan log Spark untuk daemon dan eksekutor yang berjalan di VM master dan pekerja cluster Dataproc. Setiap entri log menyertakan label komponen master, worker, atau executor 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 log ResourceManager YARN Compute Engine Dataproc.
    • worker: Log dari pekerja pengelola resource mandiri Spark, yang mirip dengan log NodeManager 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"
    

  3. dataproc.googleapis.com/startup: Namespace startup menyertakan log startup batch (cluster). Semua log skrip inisialisasi akan disertakan. Komponen diidentifikasi berdasarkan label, misalnya:

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    Contoh kueri Logs Explorer untuk log startup log di VM 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%2Fstartup"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
    
  4. dataproc.googleapis.com/agent: Namespace agent 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#"
    

  5. dataproc.googleapis.com/autoscaler: Namespace autoscaler 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.

Contoh metrik batch di Metrics Explorer.

Metrik Spark

Metrik Spark yang tersedia mencakup metrik eksekutor dan driver Spark, serta metrik sistem. Metrik Spark yang tersedia diawali dengan custom.googleapis.com/.

Contoh metrik Spark di Metrics Explorer.

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 workload untuk memberikan insight tentang kondisi dan performa workload 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.

    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 mengetahui 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:

  1. Di konsol Google Cloud, buka halaman Batches Dataproc.

    Buka Dataproc Batches

  2. Untuk membuat beban kerja batch, klik Buat.

  3. 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.

  4. 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, atau Spark-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.

    Panel investigasi penyesuaian otomatis.

    • 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.

    Tombol Tanya Gemini.

    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.

    Insight yang dihasilkan oleh Gemini untuk Google Cloud.

  • 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?, dan What can I do about it?.

    Batch mencantumkan kolom Gemini.

    Tombol Minta bantuan Gemini ditampilkan dan diaktifkan hanya jika batch yang telah selesai berada dalam status Failed,Cancelled, atau Succeeded. 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.

Dasbor metrik batch.

Tabel metrik

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 (pembersihan 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 ke 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 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.

Penjelajah log batch.