Memecahkan masalah pembuatan cluster

Dokumen ini menjelaskan pesan error umum saat pembuatan cluster dan memberikan tips tentang cara memecahkan masalah pembuatan cluster.

Pesan error umum saat pembuatan cluster

  • Pengguna tidak diizinkan untuk bertindak sebagai akun layanan

    Penyebab: Akun utama yang mencoba membuat cluster Managed Service untuk Apache Spark tidak memiliki izin yang diperlukan untuk menggunakan akun layanan yang ditentukan. Pengguna Managed Service untuk Apache Spark harus memiliki izin akun layanan ActAs untuk men-deploy resource Managed Service untuk Apache Spark; izin ini disertakan dalam peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) (lihat Peran Managed Service untuk Apache Spark).

    Solusi: Identifikasi pengguna atau akun layanan yang mencoba membuat cluster Managed Service untuk Apache Spark. Berikan peran Pengguna Akun Layanan (roles/iam.serviceAccountUser) kepada akun utama tersebut di akun layanan yang dikonfigurasi untuk digunakan oleh cluster (biasanya, akun layanan VM Managed Service untuk Apache Spark).

  • Operasi waktu tunggu habis: Hanya 0 dari 2 datanode/pengelola node minimum yang diperlukan yang berjalan.

    Penyebab: Node pengontrol tidak dapat membuat cluster karena tidak dapat berkomunikasi dengan node pekerja.

    Solusi:

  • Izin compute.subnetworks.use diperlukan untuk projects/{projectId}/regions/{region}/subnetworks/{subnetwork}

    Penyebab: Error ini dapat terjadi saat Anda mencoba menyiapkan cluster Managed Service untuk Apache Spark menggunakan jaringan VPC di project lain dan akun layanan Agen Layanan Managed Service untuk Apache Spark Service Agent tidak memiliki izin yang diperlukan di project VPC Bersama yang menghosting jaringan.

    Solusi: Ikuti langkah-langkah yang tercantum di Membuat cluster yang menggunakan jaringan VPC di project lain.

  • Zona projects/zones/{zone} tidak memiliki cukup resource yang tersedia untuk memenuhi permintaan (resource type:compute)

    Penyebab: Zona yang digunakan untuk membuat cluster tidak memiliki resource yang cukup.

    Solusi:

    • Gunakan fitur penempatan Zona OtomatisManaged Service untuk Apache Spark untuk membuat cluster di salah satu zona region dengan resource yang tersedia.
    • Buat cluster di zona lain.
  • Error Kuota Terlampaui

    Kuota CPUS/CPUS_ALL_REGIONS tidak mencukupi
    Kuota 'DISKS_TOTAL_GB' tidak mencukupi
    Kuota 'IN_USE_ADDRESSES' tidak mencukupi

    Penyebab: Permintaan CPU, disk, atau alamat IP Anda melebihi kuota yang tersedia.

    Solusi: Minta kuota tambahan dari konsol.Google Cloud

  • Tindakan inisialisasi gagal

    Penyebab: Tindakan inisialisasi yang diberikan selama pembuatan cluster gagal diinstal.

    Solusi:

  • Gagal melakukan inisialisasi node CLUSTER-NAME-m. ... Lihat output di: <gs://PATH_TO_STARTUP_SCRIPT_OUTPUT>

    Penyebab: Node pengontrol cluster Managed Service untuk Apache Spark gagal diinisialisasi.

    Solusi:

  • Pembuatan cluster gagal: Ruang alamat IP habis

    Penyebab: Ruang alamat IP yang diperlukan untuk menyediakan node cluster yang diminta tidak tersedia.

    Solusi:

    • Buat cluster dengan lebih sedikit node pekerja, tetapi jenis mesin yang lebih besar.
    • Buat cluster di subnetwork atau jaringan lain.
    • Kurangi penggunaan di jaringan untuk mengosongkan ruang alamat IP.
    • Tunggu hingga ruang IP yang cukup tersedia di jaringan.
  • Pesan error skrip inisialisasi: Repositori REPO_NAME tidak lagi memiliki file Rilis

    Penyebab: Repositori backport oldstable Debian telah dihapus.

    Solusi:

    Tambahkan kode berikut sebelum kode yang menjalankan apt-get di skrip inisialisasi Anda.

    oldstable=$(curl -s https://deb.debian.org/debian/dists/oldstable/Release | awk '/^Codename/ {print $2}');
    stable=$(curl -s https://deb.debian.org/debian/dists/stable/Release | awk '/^Codename/ {print $2}');
    
    matched_files="$(grep -rsil '\-backports' /etc/apt/sources.list*)"
    if [[ -n "$matched_files" ]]; then
      for filename in "$matched_files"; do
        grep -e "$oldstable-backports" -e "$stable-backports" "$filename" || \
          sed -i -e 's/^.*-backports.*$//' "$filename"
      done
    fi
    
  • Waktu tunggu habis saat menunggu instance DATAPROC_CLUSTER_VM_NAME melaporkan atau Jaringan tidak dapat dijangkau: dataproccontrol-REGION.googleapis.com

    Penyebab: Pesan error ini menunjukkan bahwa penyiapan jaringan cluster Managed Service untuk Apache Spark Anda belum selesai: Anda mungkin tidak memiliki rute ke gateway internet default atau aturan firewall.

    Solusi:

    Untuk memecahkan masalah ini, Anda dapat membuat Uji Konektivitas berikut:

    • Buat Uji Konektivitas antara dua VM cluster Managed Service untuk Apache Spark. Hasil pengujian ini akan membantu Anda memahami apakah aturan firewall izinkan masuk atau keluar jaringan Anda berlaku dengan benar untuk VM cluster.
    • Buat Uji Konektivitas antara VM cluster Managed Service untuk Apache Spark dan Managed Service untuk Apache Spark saat ini alamat IP API kontrol. Untuk mendapatkan alamat IP API kontrol Managed Service untuk Apache Spark saat ini, gunakan perintah berikut:
    dig dataproccontrol-REGION.googleapis.com A
    

    Gunakan salah satu alamat IPv4 di bagian jawaban output.

    Hasil Uji Konektivitas akan membantu Anda memahami apakah rute ke gateway internet default dan firewall izinkan keluar dikonfigurasi dengan benar.

    Berdasarkan hasil Uji Konektivitas:

  • Error karena update

    Penyebab: Cluster menerima tugas yang dikirimkan ke layanan Managed Service untuk Apache Spark, tetapi tidak dapat melakukan peningkatan skala atau penurunan secara manual atau melalui penskalaan otomatis. Error ini juga dapat disebabkan oleh konfigurasi cluster yang tidak standar.

    Solusi:

    • Reset cluster: Buka tiket dukungan, sertakan file tar diagnostik, dan minta cluster direset ke status RUNNING.

    • Cluster baru: Buat ulang cluster dengan konfigurasi yang sama. Solusi ini bisa lebih cepat daripada reset yang disediakan dukungan.

Tips pemecahan masalah cluster

Bagian ini memberikan panduan tambahan tentang cara memecahkan masalah umum yang dapat mencegah pembuatan cluster Managed Service untuk Apache Spark.

Jika cluster Managed Service untuk Apache Spark gagal disediakan, cluster tersebut sering kali menghasilkan pesan error umum atau melaporkan status PENDING atau PROVISIONING sebelum gagal. Kunci untuk mendiagnosis dan menyelesaikan masalah kegagalan cluster adalah memeriksa log cluster dan menilai titik kegagalan umum.

Gejala umum

Berikut adalah gejala umum yang terkait dengan kegagalan pembuatan cluster:

  • Status cluster tetap PENDING atau PROVISIONING dalam jangka waktu yang lama.
  • Cluster bertransisi ke status ERROR.
  • Error API umum selama pembuatan cluster, seperti Operation timed out.
  • Pesan error yang dicatat atau respons API, seperti:

    • RESOURCE_EXHAUSTED: terkait dengan kuota CPU, disk, atau alamat IP
    • Instance failed to start
    • Permission denied
    • Unable to connect to service_name.googleapis.com atau Could not reach required Google APIs
    • Connection refused atau network unreachable
    • Error terkait kegagalan tindakan inisialisasi, seperti error eksekusi skrip dan file tidak ditemukan.

Meninjau log cluster

Langkah awal yang penting saat mendiagnosis kegagalan pembuatan cluster adalah meninjau log cluster mendetail yang tersedia di Cloud Logging.

  1. Buka Logs Explorer: Buka Logs Explorer di Google Cloud konsol.
  2. Filter untuk cluster Managed Service untuk Apache Spark:
    • Di menu drop-down Resource, pilih Cloud Managed Service for Apache Spark Cluster.
    • Masukkan cluster_name dan project_id Anda. Anda juga dapat memfilter berdasarkan location (region).
  3. Periksa Entri Log:
    • Cari pesan tingkat ERROR atau WARNING yang terjadi mendekati waktu kegagalan pembuatan cluster.
    • Perhatikan log dari komponen master-startup, worker-startup, dan agent untuk mendapatkan insight tentang masalah tingkat VM atau agen Managed Service untuk Apache Spark.
    • Untuk mendapatkan insight tentang masalah waktu booting VM, filter log berdasarkan resource.type="gce_instance", dan cari pesan dari nama instance yang terkait dengan node cluster Anda, seperti CLUSTER_NAME-m atau CLUSTER_NAME-w-0. Log konsol serial dapat mengungkapkan masalah konfigurasi jaringan, masalah disk, dan kegagalan skrip yang terjadi pada awal siklus proses VM.

Penyebab umum kegagalan cluster dan tips pemecahan masalah

Bagian ini menguraikan alasan umum mengapa pembuatan cluster Managed Service untuk Apache Spark dapat gagal dan memberikan tips pemecahan masalah untuk membantu memecahkan masalah kegagalan cluster.

Izin IAM tidak memadai

Akun layanan VM yang digunakan oleh cluster Managed Service untuk Apache Spark Anda harus memiliki peran IAM yang sesuai untuk menyediakan instance Compute Engine, mengakses bucket Cloud Storage, menulis log, dan berinteraksi dengan layanan lainnya. Google Cloud

  • Peran Pekerja yang diperlukan: Pastikan akun layanan VM memiliki peran Pekerja Managed Service untuk Apache Spark (roles/dataproc.worker). Peran ini memiliki izin minimum yang diperlukan agar Managed Service untuk Apache Spark dapat mengelola resource cluster.
  • Izin akses data: Jika tugas Anda membaca dari atau menulis ke Cloud Storage atau BigQuery, akun layanan memerlukan peran terkait, seperti Storage Object Viewer, Storage Object Creator, atau Storage Object Admin untuk Cloud Storage, atau BigQuery Data Viewer atau BigQuery Editor untuk BigQuery.
  • Izin logging: Akun layanan harus memiliki peran dengan izin yang diperlukan untuk menulis log ke Cloud Logging, seperti peran Logging Writer.

Tips pemecahan masalah:

  • Identifikasi akun layanan: Tentukan akun layanan VM yang dikonfigurasi untuk digunakan oleh cluster Anda. Jika tidak ditentukan, defaultnya adalah akun layanan default Compute Engine.

  • Verifikasi peran IAM: Buka halaman IAM & Admin > IAM di Google Cloud konsol, temukan akun layanan VM cluster, lalu verifikasi bahwa akun tersebut memiliki peran yang diperlukan untuk operasi cluster. Berikan peran yang tidak ada.

Kuota resource terlampaui

Cluster Managed Service untuk Apache Spark menggunakan resource dari Compute Engine dan layanan Google Cloud lainnya. Melampaui kuota project atau regional dapat menyebabkan kegagalan pembuatan cluster.

  • Kuota Managed Service untuk Apache Spark umum yang perlu diperiksa:
    • CPUs (regional)
    • DISKS_TOTAL_GB (regional)
    • IN_USE_ADDRESSES (regional untuk IP internal, global untuk IP eksternal)
    • Kuota Dataproc API, seperti ClusterOperationRequestsPerMinutePerProjectPerRegion

Tips pemecahan masalah:

  • Tinjau kuota: Buka halaman IAM & Admin > IAM di Google Cloud konsol. Filter berdasarkan "Layanan" untuk "Compute Engine API" dan "Dataproc API".
  • Periksa penggunaan vs. batas: Identifikasi kuota yang berada pada atau mendekati batasnya.
  • Jika perlu, minta penambahan kuota.

Masalah konfigurasi jaringan

Masalah konfigurasi jaringan, seperti konfigurasi jaringan VPC, subnet, firewall, atau DNS yang salah, adalah penyebab umum kegagalan pembuatan cluster. Instance cluster harus dapat berkomunikasi satu sama lain dan dengan Google API.

  • Jaringan dan subnet VPC:
    • Pastikan jaringan VPC dan subnet cluster ada dan dikonfigurasi dengan benar.
    • Pastikan subnet memiliki rentang alamat IP yang tersedia.
  • Akses Google Pribadi (PGA): Jika VM cluster memiliki alamat IP internal dan perlu menjangkau Google API untuk Cloud Storage, Cloud Logging, dan operasi lainnya, pastikan bahwa Akses Google Pribadi diaktifkan di subnet. Secara default, cluster Managed Service untuk Apache Spark yang dibuat dengan versi image 2.2+ menyediakan VM dengan alamat IP khusus internal dengan Akses Google Pribadi yang diaktifkan di subnet regional cluster.
  • Private Service Connect (PSC): Jika Anda menggunakan Private Service Connect untuk mengakses Google API, pastikan bahwa endpoint Private Service Connect yang diperlukan dikonfigurasi dengan benar untuk Google API yang bergantung pada Managed Service untuk Apache Spark, seperti dataproc.googleapis.com, storage.googleapis.com, compute.googleapis.com, dan logging.googleapis.com. Entri DNS untuk API harus di-resolve ke alamat IP pribadi. Perhatikan bahwa penggunaan Private Service Connect tidak menghilangkan kebutuhan untuk menggunakan peering VPC untuk berkomunikasi dengan jaringan VPC yang dikelola pelanggan lainnya.
  • Peering VPC: Jika cluster Anda berkomunikasi dengan resource di jaringan VPC lain, seperti project host VPC bersama atau VPC pelanggan lainnya, pastikan peering VPC dikonfigurasi dengan benar dan rute disebarkan.
  • Aturan firewall:

    • Aturan default: Pastikan aturan firewall default, seperti allow-internal atau allow-ssh, tidak terlalu ketat.
    • Aturan kustom: Jika aturan firewall kustom diterapkan, pastikan aturan tersebut mengizinkan jalur komunikasi yang diperlukan:

      • Komunikasi internal dalam cluster (antara node -m dan -w).
      • Traffic keluar dari VM cluster ke Google API, menggunakan IP publik atau gateway internet, Akses Google Pribadi, atau endpoint Private Service Connect.

      • Traffic ke sumber data atau layanan eksternal yang bergantung pada tugas Anda.

  • Resolusi DNS: Pastikan instance cluster dapat me-resolve nama DNS dengan benar untuk Google API dan layanan internal atau eksternal.

Tips pemecahan masalah:

  • Tinjau konfigurasi jaringan: Periksa setelan jaringan VPC dan subnet tempat cluster di-deploy.
  • Periksa aturan firewall: Tinjau aturan firewall di jaringan VPC atau project host VPC bersama.
  • Uji konektivitas: Luncurkan VM Compute Engine sementara di subnet cluster dan jalankan langkah-langkah berikut:
    • ping atau curl ke domain Google API eksternal, seperti storage.googleapis.com.
    • nslookup untuk memverifikasi resolusi DNS ke alamat IP yang diharapkan (Akses Google Pribadi atau Private Service Connect).
    • Jalankan Google Cloud uji konektivitas untuk mendiagnosis jalur dari VM pengujian ke endpoint yang relevan.

Kegagalan tindakan inisialisasi

Tindakan inisialisasi Managed Service untuk Apache Spark adalah skrip yang berjalan di VM cluster selama pembuatan cluster. Error dalam skrip ini dapat mencegah startup cluster.

Tips pemecahan masalah:

  • Periksa log untuk error tindakan inisialisasi: Cari entri log yang terkait dengan init-actions atau startup-script untuk instance cluster di Cloud Logging.
  • Periksa jalur dan izin skrip: Pastikan skrip tindakan inisialisasi terletak dengan benar di Cloud Storage dan akun layanan VM cluster memiliki peran Storage Object Viewer yang diperlukan untuk membaca skrip Cloud Storage.
  • Debug logika skrip: Uji logika skrip di VM Compute Engine terpisah yang meniru lingkungan cluster untuk mengidentifikasi error. Tambahkan logging verbose ke skrip.

Ketersediaan resource regional (kehabisan stok)

Terkadang, jenis mesin atau resource di region atau zona mengalami ketidaktersediaan sementara (kehabisan stok). Biasanya, hal ini akan menghasilkan error RESOURCE_EXHAUSTED yang tidak terkait dengan masalah kuota project.

Tips pemecahan masalah:

  • Coba zona atau region lain: Coba buat cluster di zona lain dalam region yang sama, atau di region lain.
  • Gunakan penempatan Zona Otomatis: Gunakan fitur penempatan Zona Otomatis Managed Service untuk Apache Spark Auto Zone placement untuk memilih zona dengan kapasitas secara otomatis.
  • Sesuaikan jenis mesin: Jika menggunakan jenis mesin kustom atau khusus, coba jenis mesin standar untuk melihat apakah masalah tersebut dapat diselesaikan.

Menghubungi Cloud Customer Care

Jika Anda terus mengalami masalah kegagalan cluster, hubungi Cloud Customer Care. Jelaskan masalah kegagalan cluster dan langkah-langkah pemecahan masalah yang telah dilakukan. Selain itu, berikan informasi berikut:

  • Data diagnostik cluster
  • Output dari perintah berikut:
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION
      
  • Log yang diekspor untuk cluster yang gagal.

Menggunakan alat gcpdiag

gcpdiag adalah alat open source. Alat ini bukan produk yang didukung secara resmi Google Cloud . Anda dapat menggunakan alat gcpdiag untuk membantu mengidentifikasi dan memperbaiki Google Cloud masalah project. Untuk mengetahui informasi selengkapnya, lihat project gcpdiag di GitHub.

Alat gcpdiag membantu Anda menemukan masalah pembuatan cluster Managed Service untuk Apache Spark berikut dengan melakukan pemeriksaan berikut:

  • Error kehabisan stok: Mengevaluasi log Logs Explorer untuk menemukan kehabisan stok di region dan zona.
  • Kuota tidak mencukupi: Memeriksa ketersediaan kuota di project cluster Managed Service untuk Apache Spark.
  • Konfigurasi jaringan tidak lengkap: Melakukan uji konektivitas jaringan, termasuk pemeriksaan aturan firewall yang diperlukan dan konfigurasi IP eksternal dan internal. Jika cluster telah dihapus, alat gcpdiag tidak dapat melakukan pemeriksaan konektivitas jaringan.
  • Konfigurasi lintas project yang salah: Memeriksa akun layanan lintas project dan meninjau peran tambahan serta penerapan kebijakan organisasi.
  • Peran IAM jaringan Virtual Private Cloud bersama tidak ada: Jika cluster Managed Service untuk Apache Spark menggunakan jaringan VPC Bersama, periksa penambahan peran akun layanan yang diperlukan.
  • Kegagalan tindakan inisialisasi: Mengevaluasi log Logs Explorer untuk menemukan kegagalan dan waktu tunggu skrip tindakan inisialisasi.

Untuk mengetahui daftar langkah-langkah dataproc gcpdiag, termasuk langkah-langkah pembuatan cluster, lihat Langkah-langkah Managed Service untuk Apache Spark.

Menjalankan perintah gcpdiag

Anda dapat menjalankan perintah gcpdiag dari Cloud Shell di Google Cloud konsol atau dalam container Docker.

Google Cloud Konsol

  1. Lengkapi, lalu salin perintah berikut.
  2. gcpdiag runbook managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS
  3. Buka Google Cloud konsol dan aktifkan Cloud Shell.
  4. Buka konsol Cloud
  5. Tempel perintah yang disalin.
  6. Jalankan perintah gcpdiag, yang mendownload image docker gcpdiag, lalu melakukan pemeriksaan diagnostik. Jika berlaku, ikuti petunjuk output untuk memperbaiki pemeriksaan yang gagal.

Docker

Anda dapat menjalankan gcpdiag menggunakan wrapper yang memulai gcpdiag di container Docker. Docker atau Podman harus diinstal.

  1. Salin dan jalankan perintah berikut di workstation lokal Anda.
    curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
  2. Jalankan perintah gcpdiag.
    ./gcpdiag runbook managed-spark/cluster-creation \
        --parameter project_id=PROJECT_ID \
        --parameter cluster_name=CLUSTER_NAME \
        --parameter OPTIONAL_FLAGS

Lihat parameter yang tersedia untuk runbook ini.

Ganti kode berikut:

    • PROJECT_ID: ID project yang berisi resource
    • CLUSTER_NAME: Nama cluster Managed Service untuk Apache Spark target di project Anda
    • OPTIONAL_PARAMETERS: Tambahkan satu atau beberapa parameter opsional berikut. Parameter ini diperlukan jika cluster telah dihapus.
      • cluster_uuid: UUID cluster Managed Service untuk Apache Spark target di project Anda
      • service_account: Akun layanan VM cluster Managed Service untuk Apache Spark
      • subnetwork: Jalur URI lengkap subnetwork cluster Managed Service untuk Apache Spark
      • internal_ip_only: Benar atau Salah
      • cross_project: ID lintas project jika cluster Managed Service untuk Apache Spark menggunakan akun layanan VM di project lain

Flag yang berguna:

Untuk mengetahui daftar dan deskripsi semua gcpdiag flag alat, lihat gcpdiag petunjuk penggunaan.

Langkah berikutnya