Dokumen ini memberikan panduan tentang cara memecahkan masalah umum yang mencegah Google Cloud Serverless for Apache Spark memulai workload batch Spark dan sesi interaktif.
Ringkasan
Biasanya, saat batch atau sesi gagal dimulai, pesan error berikut akan ditampilkan:
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 umum 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 menyelesaikan masalah.
Izin akun layanan tidak memadai
Akun layanan yang digunakan oleh batch atau sesi Serverless for Apache Spark Anda memerlukan peran IAM tertentu yang mencakup izin untuk operasi dan akses Serverless for Apache Spark 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 Dataproc Worker (
roles/dataproc.worker
). Peran ini berisi izin minimum yang diperlukan agar Serverless for 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 default Compute Engine akan digunakan.
- Buka halaman IAM & Admin > IAM di konsol Google Cloud , temukan akun layanan batch atau sesi, lalu verifikasi bahwa akun tersebut memiliki peran yang diperlukan untuk operasi. Berikan peran yang belum ada.
Kuota tidak mencukupi
Melebihi kuota khusus project atau region untuk Google Cloud Serverless untuk Apache Spark atau resource Google Cloud lain dapat mencegah batch atau sesi baru dimulai.
Tips pemecahan masalah:
Tinjau halaman Google Cloud kuota Serverless untuk Apache Spark untuk memahami batas pada batch serentak, DCU, dan penyimpanan shuffle.
- Anda juga dapat menggunakan perintah
gcloud compute quotas list
untuk 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 konsol Google Cloud .
Masalah konfigurasi jaringan
Setelan jaringan yang salah, seperti konfigurasi VPC, Akses Google Pribadi, atau aturan firewall, dapat memblokir driver Spark agar tidak diinisialisasi atau terhubung ke layanan yang diperlukan.
Tips pemecahan masalah:
Pastikan jaringan dan subnet VPC yang ditentukan untuk batch atau sesi Anda dikonfigurasi dengan benar dan memiliki alamat IP yang tersedia dalam jumlah yang cukup.
Jika batch atau sesi Anda perlu mengakses Google API dan layanan Google tanpa melintasi internet publik, pastikan Akses Google Pribadi diaktifkan untuk subnet.
Tinjau aturan firewall VPC Anda untuk memverifikasi bahwa aturan tersebut tidak secara tidak sengaja memblokir komunikasi internal atau keluar ke Google API atau layanan eksternal yang diperlukan oleh aplikasi Spark Anda.
Masalah properti spark atau kode aplikasi tidak valid
Konfigurasi yang salah pada properti Spark, terutama yang terkait dengan resource driver, atau masalah dalam kode aplikasi Spark dapat menyebabkan kegagalan startup.
Tips pemecahan masalah:
Periksa nilai
spark.driver.memory
danspark.driver.cores
. Pastikan batasnya wajar dan sesuai dengan DCU yang tersedia. Nilai yang terlalu besar untuk properti ini dapat menyebabkan kehabisan resource dan kegagalan inisialisasi. Hapus properti Spark yang tidak perlu atau eksperimental untuk menyederhanakan proses penelusuran bug.Coba jalankan aplikasi Spark "Hello World" untuk menentukan apakah masalahnya terjadi karena 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 konsol Google Cloud .
- Filter untuk Batch atau Sesi Serverless untuk Apache Spark:
- Di drop-down Resource, pilih
Cloud Dataproc Batch
atauCloud Dataproc Session
. - Filter menurut
batch_id
atausession_id
untuk batch atau sesi yang gagal. Anda juga dapat memfilter menurutproject_id
danlocation
(wilayah).
- Di drop-down Resource, pilih
- Cari entri log dengan
jsonPayload.component="driver"
. Log ini sering kali berisi pesan error atau stack trace tertentu yang dapat menunjukkan alasan kegagalan inisialisasi driver sebelum waktu tunggu 600 detik terjadi.