Dokumen ini memberikan panduan tentang cara memecahkan masalah umum yang mencegah workload batch Spark dan sesi interaktif Managed Service untuk Apache Spark dimulai.
Ringkasan
Biasanya, jika batch atau sesi gagal dimulai, batch atau sesi tersebut akan melaporkan pesan error berikut:
Driver compute node failed to initialize for batch in 600 seconds
Pesan error ini menunjukkan bahwa driver Spark tidak dapat dimulai dalam periode waktu tunggu default 600 detik (10 menit). Penyebab umumnya terkait dengan izin akun layanan, ketersediaan resource, konfigurasi jaringan, atau properti Spark.
Penyebab kegagalan memulai batch dan sesi serta langkah-langkah pemecahan masalah
Bagian berikut mencantumkan penyebab umum kegagalan memulai batch dan sesi dengan tips pemecahan masalah untuk membantu Anda mengatasi masalah tersebut.
Izin akun layanan tidak mencukupi
Akun layanan yang digunakan oleh batch atau sesi Managed Service untuk Apache Spark Anda memerlukan peran IAM tertentu yang menyertakan izin untuk operasi Managed Service untuk Apache Spark dan akses ke Google Cloud resource. Jika akun layanan tidak memiliki peran yang diperlukan, driver Spark untuk batch atau sesi dapat gagal diinisialisasi.
- Peran Worker yang diperlukan: Akun layanan batch atau sesi harus memiliki peran Managed Service untuk Apache Spark Worker (
roles/dataproc.worker). Peran ini berisi izin minimum yang diperlukan agar Managed Service untuk Apache Spark dapat menyediakan dan mengelola resource komputasi. - Izin Akses Data: Jika aplikasi Spark Anda membaca dari atau menulis ke Cloud Storage atau BigQuery, akun layanan memerlukan peran yang terkait dengan layanan tersebut:
- Cloud Storage: Peran
Storage Object Viewer(roles/storage.objectViewer) diperlukan untuk membaca, dan peranStorage Object Creator(roles/storage.objectCreator) atau peranStorage Object Admin(roles/storage.admin) diperlukan untuk menulis. - BigQuery: Peran
BigQuery Data Viewer(roles/bigquery.dataViewer) diperlukan untuk membaca dan peranBigQuery Data Editor(roles/bigquery.dataEditor) diperlukan untuk menulis.
- Cloud Storage: Peran
- Izin Logging: Akun layanan memerlukan peran dengan izin untuk menulis log ke Cloud Logging. Biasanya, peran
Logging Writer(roles/logging.logWriter) sudah cukup.
Tips pemecahan masalah:
- Identifikasi akun layanan batch atau sesi . Jika tidak ditentukan, akun layanan akan ditetapkan secara default ke akun layanan default Compute Engine.
- Buka halaman IAM & Admin > IAM di Google Cloud konsol, temukan akun layanan batch atau sesi, lalu pastikan akun tersebut memiliki peran yang diperlukan untuk operasi. Berikan peran yang tidak ada.
Kuota tidak mencukupi
Melebihi kuota khusus project atau region untuk Managed Service untuk Apache Spark atau resource lainnya Google Cloud dapat mencegah batch atau sesi baru dimulai.
Tips pemecahan masalah:
Tinjau halaman kuota Managed Service untuk Apache Spark untuk memahami batas batch serentak, DCU, dan penyimpanan shuffle.
- Anda juga dapat menggunakan perintah
gcloud compute quotas listuntuk melihat penggunaan dan batas saat ini untuk project dan region Anda:gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
- Anda juga dapat menggunakan perintah
Jika Anda berulang kali mencapai batas kuota, pertimbangkan untuk meminta penambahan kuota melalui Google Cloud konsol.
Masalah konfigurasi jaringan
Setelan jaringan yang salah, seperti konfigurasi VPC, Akses Google Pribadi, atau aturan firewall, dapat memblokir driver Spark agar tidak dapat diinisialisasi atau terhubung ke layanan yang diperlukan.
Tips pemecahan masalah:
Pastikan jaringan VPC dan subnet yang ditentukan untuk batch atau sesi Anda dikonfigurasi dengan benar dan memiliki alamat IP yang cukup.
Jika batch atau sesi Anda perlu mengakses Google API dan layanan tanpa melintasi internet publik, pastikan Akses Google Pribadi diaktifkan untuk subnet.
Tinjau aturan firewall VPC Anda untuk memastikan aturan tersebut tidak secara tidak sengaja memblokir komunikasi internal atau traffic keluar ke Google API atau layanan eksternal yang diperlukan oleh aplikasi Spark Anda.
Masalah properti spark atau kode aplikasi yang tidak valid
Properti Spark yang salah konfigurasi, terutama yang terkait dengan resource driver, atau masalah dalam kode aplikasi Spark Anda dapat menyebabkan kegagalan startup.
Tips pemecahan masalah:
Periksa nilai
spark.driver.memorydanspark.driver.cores. Pastikan nilai tersebut berada dalam batas yang wajar dan selaras dengan DCU yang tersedia. Nilai yang terlalu besar untuk properti ini dapat menyebabkan kehabisan resource dan kegagalan inisialisasi. Hapus properti Spark yang tidak diperlukan atau eksperimental untuk menyederhanakan proses debug.Coba jalankan aplikasi Spark "Hello World" untuk menentukan apakah masalahnya ada pada penyiapan lingkungan Anda atau karena kompleksitas atau error kode.
Pastikan semua JAR aplikasi, file Python, atau dependensi yang ditentukan untuk batch atau sesi Anda berada di Cloud Storage dengan benar dan dapat diakses oleh akun layanan batch atau sesi.
Memeriksa log
Langkah penting dalam mendiagnosis kegagalan pembuatan batch adalah memeriksa log mendetail di Cloud Logging.
- Buka halaman Cloud Logging di Google Cloud konsol.
- Filter untuk Batch atau Sesi Managed Service untuk Apache Spark:
- Di menu drop-down Resource, pilih
Cloud Managed Service for Apache Spark BatchatauCloud Managed Service for Apache Spark Session. - Filter menurut
batch_idatausession_iduntuk batch atau sesi yang gagal. Anda juga dapat memfilter menurutproject_iddanlocation(region).
- Di menu drop-down Resource, pilih
- Cari entri log dengan
jsonPayload.component="driver". Log ini sering kali berisi pesan error atau pelacakan tumpukan tertentu yang dapat menunjukkan alasan kegagalan inisialisasi driver sebelum waktu tunggu 600 detik terjadi.