Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menguraikan beberapa opsi penelusuran kesalahan yang tersedia untuk aplikasi Apache Spark Anda:
- Antarmuka pengguna Spark
- Log Pengemudi
- Log pelaksana
Lihat Mendiagnosis Masalah Biaya dan Performa Menggunakan UI Spark untuk menelusuri dan mendiagnosis masalah biaya serta performa menggunakan UI Spark.
Antarmuka pengguna Spark
Setelah Anda memulai pekerjaan, antarmuka pengguna Spark menampilkan informasi tentang apa yang terjadi di aplikasi Anda. Untuk masuk ke antarmuka pengguna Spark, pilih komputasi Anda dari halaman Komputasi , lalu klik tab UI Spark :
Tab Streaming
Dalam UI Spark, Anda akan melihat tab Streaming jika pekerjaan streaming berjalan pada komputasi. Jika tidak ada pekerjaan streaming yang berjalan dalam komputasi ini, tab ini tidak terlihat. Anda dapat langsung ke Log driver untuk mempelajari cara memeriksa pengecualian atau kesalahan yang mungkin telah terjadi saat memulai tugas streaming.
Halaman ini memungkinkan Anda untuk memeriksa apakah aplikasi streaming Anda menerima peristiwa input apa pun dari sumber Anda. Misalnya, Anda mungkin melihat bahwa pekerjaan menerima 1000 peristiwa/detik.
Nota
Untuk TextFileStream, karena file adalah masukan, jumlah peristiwa input selalu 0. Dalam kasus seperti itu, Anda dapat melihat bagian Batch Selesai di notebook untuk mencari tahu cara mendapatkan informasi lebih lanjut.
Jika Anda memiliki aplikasi yang menerima beberapa aliran input, Anda dapat mengklik tautan Laju Input yang akan menampilkan # peristiwa yang diterima untuk setiap penerima.
Waktu pemrosesan
Saat Anda menggulir ke bawah, temukan grafik untuk Waktu Pemrosesan. Ini adalah salah satu grafik utama untuk memahami performa pekerjaan streaming Anda. Sebagai aturan umum praktis, ada baiknya jika Anda dapat memproses setiap batch dalam waktu 80% waktu pemrosesan batch Anda.
Jika waktu pemrosesan rata-rata lebih dekat atau lebih besar dari interval batch Anda, maka Anda akan memiliki aplikasi streaming yang akan mulai mengantre sehingga segera menghasilkan backlog yang dapat menurunkan pekerjaan streaming Anda pada akhirnya.
Batch yang telah selesai
Menjelang akhir halaman, Anda akan melihat daftar semua batch yang telah selesai. Halaman ini menampilkan detail tentang 1000 batch terakhir yang telah selesai. Dari tabel, Anda bisa mendapatkan # peristiwa yang diproses untuk setiap batch dan waktu pemrosesannya. Jika Anda ingin tahu lebih banyak tentang apa yang terjadi pada salah satu batch, Anda dapat mengklik tautan batch untuk masuk ke halaman detail Batch .
Halaman detail-detail kelompok
Halaman Rincian Batch memuat semua rincian tentang batch. Dua hal utama adalah:
- Input: Berisi detail tentang input ke batch. Dalam hal ini, ia memuat rincian tentang topik Apache Kafka, partisi, dan offset yang dibaca oleh Spark Structured Streaming untuk batch ini. Dalam kasus TextFileStream, Anda akan melihat daftar nama file yang dibaca untuk batch ini. Ini adalah cara terbaik untuk mulai men-debug pembacaan aplikasi Streaming dari file teks.
- Pemrosesan: Anda dapat mengklik tautan ke ID Pekerjaan yang memiliki semua detail tentang pemrosesan yang dilakukan selama batch ini.
Halaman detail pekerjaan
Halaman detail pekerjaan memperlihatkan visualisasi DAG. Ini berguna untuk memahami urutan operasi dan dependensi untuk setiap batch. Misalnya, ini dapat menunjukkan bahwa input baca batch dari aliran langsung Kafka diikuti oleh operasi peta datar dan kemudian operasi peta, dan bahwa aliran yang dihasilkan kemudian digunakan untuk memperbarui status global menggunakan updateStateByKey.
Kotak abu-abu mewakili tahapan yang dilewati. Spark cukup pintar untuk melewati beberapa tahap jika tidak perlu dikomputasi ulang. Jika data di-checkpoint atau di-cache, maka Spark melewati komputasi ulang tahapan tersebut. Dalam contoh streaming sebelumnya, tahap-tahap tersebut sesuai dengan ketergantungan pada batch sebelumnya karena updateStateBykey. Karena Spark Structured Streaming secara internal memeriksa aliran dan dibaca dari titik pemeriksaan alih-alih bergantung pada batch sebelumnya, mereka ditampilkan sebagai tahap abu-abu.
Di bagian bawah halaman, Anda juga akan menemukan daftar pekerjaan yang dijalankan untuk batch ini. Anda dapat mengklik tautan dalam deskripsi untuk menelusuri lebih jauh ke dalam pelaksanaan tingkat tugas.
Halaman detail tugas
Ini adalah tingkat debugging paling terperinci yang dapat Anda masuki dari Spark UI untuk aplikasi Spark. Halaman ini memiliki semua tugas yang dijalankan untuk batch ini. Jika Anda menyelidiki masalah performa pada aplikasi streaming Anda, halaman ini menyediakan informasi seperti jumlah tugas yang dijalankan dan di mana mereka dijalankan (pada pelaksana mana) serta informasi shuffle.
Tips
Pastikan bahwa tugas dijalankan pada beberapa eksekutor (simpul) dalam komputasi Anda untuk memiliki paralelisme yang cukup saat memproses. Jika Anda memiliki satu penerima, terkadang hanya satu eksekutor yang mungkin melakukan semua pekerjaan meskipun Anda memiliki lebih dari satu eksekutor dalam komputasi Anda.
Cuplikan utas
Dump utas menunjukkan cuplikan status utas JVM.
Pembuangan utas berguna dalam men-debug tugas tertentu yang menggantung atau berjalan lambat. Untuk melihat dump utas dari tugas tertentu di antarmuka pengguna Spark:
- Klik tab Pekerjaan.
- Dalam tabel Pekerjaan, temukan pekerjaan yang sesuai dengan thread dump yang ingin Anda lihat, dan klik tautan di kolom Deskripsi.
- Dalam tabel Tahapan pekerjaan, temukan tahap target yang sesuai dengan thread dump yang ingin Anda lihat, dan klik tautan di kolom Deskripsi.
- Dalam daftar Tugas tahapan, temukan tugas target sesuai dengan tangkapan utas yang ingin Anda lihat, dan catat nilai ID Tugas dan ID Pelaksananya.
- Klik tab Pelaksana.
- Dalam tabel Eksekutor
, temukan baris yang berisi nilai ID Eksekutor yang sesuai dengan nilai ID Pelaksana yang Anda catat sebelumnya. Di baris tersebut, klik tautan di kolom Thread Dump. - Dalam tabel Thread dump for executor, klik baris di mana kolom Nama Utas berisi TID diikuti dengan nilai ID Tugas yang Anda catat sebelumnya. (Jika tugas telah selesai berjalan, Anda tidak akan menemukan utas yang cocok). Cuplikan utas dari tugas ditampilkan.
Thread dump juga berguna untuk melakukan debugging di mana driver tampaknya menggantung (misalnya, tidak ada bilah kemajuan Spark yang ditampilkan) atau tidak ada kemajuan pada kueri (misalnya, bilah kemajuan Spark macet di 100%). Untuk melihat tumpukan utas driver di antarmuka pengguna Spark:
- Klik tab Pelaksana.
- Dalam tabel Eksekutor, di baris driver, klik tautan di kolom Pembuangan Utas. Cuplikan utas dari pengemudi ditampilkan.
Log Pengemudi
Log driver berguna dalam kasus berikut:
- Pengecualian: Terkadang, Anda mungkin tidak melihat tab Streaming di antarmuka pengguna Spark. Ini karena pekerjaan Streaming tidak dimulai karena suatu kesalahan. Anda dapat menelusuri log Driver untuk melihat tumpukan jejak pengecualian tersebut. Dalam beberapa kasus, tugas streaming mungkin sudah dimulai dengan benar. Tetapi Anda akan melihat semua batch tidak pernah masuk ke bagian Batch yang sudah selesai. Semuanya mungkin dalam status diproses atau gagal. Dalam kasus ini, log driver juga berguna untuk memahami sifat masalah yang mendasar.
- Cetakan: Setiap pernyataan cetak sebagai bagian dari DAG juga muncul di log.
Nota
Siapa yang dapat mengakses log driver tergantung pada mode akses sumber daya komputasi. Untuk komputasi dengan mode akses Standar , hanya admin ruang kerja yang dapat mengakses log driver. Untuk komputasi dengan mode Akses Dedicated, pengguna atau grup Dedicated dan admin ruang kerja dapat mengakses log driver.
Log pelaksana
Log eksekutor sangat membantu jika Anda melihat tugas tertentu bermasalah dan ingin melihat log untuk tugas-tugas tersebut. Dari halaman detail tugas yang diperlihatkan di atas, Anda bisa mendapatkan pelaksana tempat tugas dijalankan. Setelah memilikinya, Anda dapat membuka halaman antarmuka pengguna komputasi, klik simpul # , lalu master. Halaman master mencantumkan semua pekerja. Anda dapat memilih pekerja di mana tugas mencurigakan dijalankan dan kemudian masuk ke output log4j.
Nota
Log eksekutor tidak tersedia untuk komputasi yang menggunakan mode akses Standar. Untuk komputasi dengan mode akses Dedikasi, pengguna atau grup dedikasi serta admin ruang kerja dapat mengakses log eksekutor.