Memantau dan memecahkan masalah workload batch

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 konsol Google Cloud

Jika tugas batch gagal atau memiliki performa yang buruk, langkah pertama yang direkomendasikan adalah membuka halaman Job details (Batch details) dengan mengklik Job ID batch di tab Serverless Spark pada halaman Jobs di konsol Google Cloud .

Menggunakan tab Ringkasan: Hub pemecahan masalah Anda

Tab Summary, yang dipilih secara default saat halaman Job details batch terbuka, menampilkan metrik penting dan log yang difilter untuk membantu Anda membuat penilaian awal yang cepat terhadap kondisi batch. Setelah penilaian awal ini, Anda dapat melakukan analisis yang lebih mendalam menggunakan alat yang lebih khusus yang tersedia dari halaman Job details batch, seperti Spark UI, Logs Explorer, dan Gemini Cloud Assist.

Sorotan metrik batch

Tab Summary dan Monitoring di halaman Job details batch menyertakan diagram yang menampilkan nilai metrik workload batch yang penting. Diagram metrik diisi setelah selesai, dan menawarkan indikasi visual potensi masalah seperti pertentangan resource, kecondongan data, atau tekanan memori.

Dasbor metrik batch.

Tabel metrik

Tabel berikut mencantumkan metrik workload Spark yang ditampilkan di halaman Detail tugas batch di konsol Google Cloud , dan menjelaskan cara nilai metrik dapat memberikan insight tentang status dan performa workload.

Metrik Apa yang ditampilkan?
Metrik di tingkat Executor
Rasio Waktu GC JVM terhadap Runtime Metrik ini menunjukkan rasio waktu GC (pembersihan sampah memori) JVM terhadap runtime per eksekutor. Rasio yang tinggi dapat mengindikasikan 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 mengindikasikan kecondongan data. Jika metrik meningkat seiring 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 mengindikasikan skenario saat penggabungan yang direplikasi menyebabkan amplifikasi data pada eksekutor tertentu.
Data yang Dibaca dan Ditulis Metrik ini menunjukkan data yang dibaca dan ditulis per eksekutor. Jumlah pembacaan data yang besar dengan jumlah penulisan data yang rendah dapat mengindikasikan bottleneck dalam logika pemrosesan pada eksekutor tertentu, sehingga data dibaca saat menunggu. Executor yang terus-menerus mengalami keterlambatan dalam pembacaan dan penulisan dapat mengindikasikan adanya perebutan resource pada node tersebut atau inefisiensi kode khusus executor.
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 mengindikasikan kecondongan data atau serialisasi data yang tidak efisien. Anda dapat mengidentifikasi tahap dengan waktu tulis shuffle yang lama di Spark UI. Cari tugas pencilan dalam tahap tersebut yang memerlukan waktu lebih lama dari 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 mungkin dapat membantu. Penulisan data yang sangat besar dibandingkan dengan pembacaan data dapat mengindikasikan duplikasi data yang tidak diinginkan karena penggabungan yang tidak efisien atau transformasi yang salah.
Metrik di tingkat Aplikasi
Progres Fase Tidur Metrik ini menunjukkan jumlah tahap dalam tahap gagal, menunggu, dan berjalan. Sejumlah besar tahap yang gagal atau menunggu dapat mengindikasikan kecondongan data. Periksa partisi data, dan debug alasan kegagalan stage menggunakan tab Stages di Spark UI.
Eksekutor Spark Batch Metrik ini menunjukkan jumlah eksekutor yang mungkin diperlukan versus jumlah eksekutor yang berjalan. Perbedaan besar antara eksekutor yang diperlukan dan yang berjalan dapat mengindikasikan 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. Selain itu, debug kode Spark untuk caching set data besar dan siaran variabel yang tidak perlu.

Log tugas

Halaman Job details tugas batch menyertakan tab Job logs (dan sorotan log) yang mencantumkan peringatan dan error yang difilter dari log tugas batch (workload batch). Fitur ini memungkinkan identifikasi cepat masalah kritis tanpa perlu mengurai file log yang ekstensif 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.

Melihat log batch di Cloud Logging
Melihat log batch di Cloud Logging

Contoh: Logs Explorer terbuka setelah memilih Errors dari pemilih Severity di halaman Job details batch di konsol Google Cloud .

Batch logs explorer.

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.

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 workload batch. Izin ini disertakan dalam peran Managed Service for Apache Spark Worker, yang 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 dataproc.batches.sparkApplicationWrite ke akun layanan tersebut (biasanya, dengan memberikan peran Worker Managed Service untuk Apache Spark ke akun layanan).

  • Izin akses Spark UI: dataproc.batches.sparkApplicationRead. Izin ini harus diberikan kepada pengguna untuk mengakses UI Spark di konsolGoogle Cloud . Izin ini disertakan dalam peran Dataproc Viewer, Dataproc Editor, dan Dataproc Administrator. Untuk membuka Spark UI di konsol Google Cloud , Anda harus memiliki salah satu peran ini atau memiliki peran khusus yang menyertakan izin ini.

Membuka Spark UI

Halaman Spark UI tersedia di workload batch konsol Google Cloud .

  1. Di konsol Google Cloud , buka halaman Tugas Managed Service untuk Apache Spark.

    Buka Managed Service for Apache Spark Jobs

  2. Pilih tab Serverless Spark, lalu klik ID Tugas batch untuk membuka halaman Detail tugas.

  3. Klik View in Spark UI (di samping ID aplikasi Spark) atau View Spark UI.

Link View in Spark UI dinonaktifkan dalam kasus berikut:

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.

Membuat kueri log Managed Service untuk Apache 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 Refine scope Project untuk memilih project lain.
  3. Menentukan kueri log batch.

    • Gunakan menu filter untuk memfilter workload batch.

      1. Di bagian All resources, pilih resource Cloud Managed Service untuk Apache Spark Batch.

        1. Di panel Select resource, pilih LOCATION batch, lalu BATCH ID. Parameter batch ini tercantum di tab Serverless Spark di halaman Jobs Managed Service untuk Apache Spark 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 dalam contoh berikut:

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

        • VM_NAME_PREFIX: Gunakan gdpic-rm untuk workload batch yang berjalan di Managed Service untuk Apache Spark 3.0 dan versi runtime yang lebih baru; gunakan gdpic-srvls-batch untuk workload batch yang berjalan di versi runtime yang lebih lama.
        • BATCH_UUID: Job UUID batch tercantum di halaman Job details (Batch details) batch di konsol Google Cloud , yang akan terbuka saat Anda mengklik Job ID batch di tab Serverless Spark pada halaman Jobs.

        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 Managed Service for Apache Spark

Daftar berikut menjelaskan berbagai jenis log Managed Service untuk Apache Spark dan memberikan contoh kueri Logs Explorer untuk setiap jenis log.

  1. dataproc.googleapis.com/output: File log ini berisi output workload batch. Managed Service untuk Apache Spark men-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. Namespace dataproc.googleapis.com/spark: spark menggabungkan log Spark untuk daemon dan eksekutor yang berjalan di VM master dan worker cluster Managed Service for Apache Spark. Setiap entri log menyertakan label komponen master, worker, atau executor untuk mengidentifikasi sumber log, sebagai berikut:

    • executor: Log dari eksekutor kode pengguna. Biasanya, log ini adalah log terdistribusi.
    • master: Log dari master pengelola resource mandiri Spark, yang mirip dengan log ResourceManager YARN Managed Service untuk Apache Spark.
    • worker: Log dari worker pengelola resource mandiri Spark, yang mirip dengan log NodeManager YARN 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"
    

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

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    Contoh kueri Logs Explorer untuk log startup 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"="VM_NAME_PREFIX-BATCH_UUID-VM_SUFFIX"
    
  4. dataproc.googleapis.com/agent: Namespace agent menggabungkan 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 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"="VM_NAME_PREFIX-BATCHUUID-wWORKER#"
    

  5. dataproc.googleapis.com/autoscaler: Namespace autoscaler menggabungkan log autoscaler Managed Service untuk Apache Spark.

    Contoh kueri Logs Explorer untuk log autoscaler yang dihasilkan oleh worker 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%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 Job details batch di konsol Google Cloud .

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.

Contoh metrik batch di Metrics Explorer.

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

Contoh metrik Spark di Metrics Explorer.

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 konsolGoogle 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 Managed Service untuk Apache Spark. Metrik workload 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 workload menggunakan metrik dari beberapa project dan produk Google Cloud yang berbeda. 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 akan dipertahankan setelah workload selesai. Namun, Anda dapat menggunakan Persistent History Server (PHS) untuk mempertahankan histori aplikasi workload (log peristiwa) di Cloud Storage.

Untuk menggunakan PHS dengan workload batch, lakukan hal berikut:

  1. Buat Persistent History Server (PHS) Managed Service untuk Apache Spark.

  2. Tentukan PHS Anda saat Anda mengirimkan workload.

  3. Gunakan Component Gateway untuk terhubung ke PHS guna melihat detail aplikasi, tahap penjadwal, detail tingkat tugas, serta informasi lingkungan dan eksekutor.

Penyesuaian otomatis

  • Mengaktifkan autotuning untuk Managed Service untuk Apache Spark: Anda dapat mengaktifkan Autotuning untuk Managed Service untuk Apache Spark saat mengirimkan setiap workload batch Spark berulang menggunakan konsol Google Cloud , gcloud CLI, atau Managed Service untuk Apache Spark API.

Konsol

Lakukan langkah-langkah berikut untuk mengaktifkan penyesuaian otomatis pada setiap workload batch Spark berulang:

  1. Di konsol Google Cloud , buka halaman Tugas Managed Service untuk Apache Spark.

    Buka Managed Service for Apache Spark Jobs

  2. Untuk membuat workload batch, klik Submit job untuk membuka halaman Submit a job.

  3. Di bagian Select compute type for job, pastikan Serverless Spark dipilih.

  4. Di bagian Serverless job details:

    1. Tentukan ID pekerjaan atau terima ID default.
    2. Pilih Runtime profile (atau pertahankan Default service configuration untuk region Anda), lalu klik Configure di kartu Summary (atau klik Create new profile di menu Runtime profile) untuk membuka panel konfigurasi profil runtime.
    3. Di panel konfigurasi profil runtime, luaskan Additional configuration, lalu klik Edit di samping Other customizations.
    4. Di panel Other customizations, di bagian Autotuning, klik tombol Enable dan isi Cohort ID, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Analisis yang dibantu Gemini diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan ID kelompok ini. Misalnya, tentukan tpch-query1 sebagai ID kelompok untuk workload terjadwal yang menjalankan kueri TPC-H harian.
    5. Klik Save di panel Other customizations, lalu klik Use configuration (atau Save new profile) di panel konfigurasi profil runtime.
  5. Isi bagian Files and artifacts dan Job execution and properties di halaman Submit a job 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 penyesuaian 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, atau Spark-R.
  • REGION: region tempat workload Anda akan berjalan.
  • COHORT: nama kelompok, yang mengidentifikasi batch sebagai salah satu dari serangkaian workload berulang. Analisis yang dibantu Gemini diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama kelompok ini. Misalnya, tentukan TPCH Query 1 sebagai nama kelompok untuk workload terjadwal yang menjalankan kueri TPC-H harian.

API

Sertakan nama RuntimeConfig.cohort dalam permintaan batches.create untuk mengaktifkan penyesuaian otomatis pada setiap workload batch Spark berulang. Penyesuaian otomatis diterapkan ke workload kedua dan berikutnya yang dikirimkan dengan nama kelompok ini. Misalnya, tentukan TPCH-Query1 sebagai nama kelompok untuk workload terjadwal yang menjalankan kueri TPC-H harian.

Contoh:

...
runtimeConfig:
  cohort: TPCH-Query1
...