Memecahkan masalah tugas Dataproc

Dokumen ini mencantumkan pesan error tugas umum, memberikan informasi pemantauan dan proses debug tugas untuk membantu Anda memecahkan masalah tugas Dataproc.

Pesan error umum tugas

Task was not acquired

Hal ini menunjukkan bahwa agen Dataproc di node master tidak dapat memperoleh tugas dari bidang kontrol. Hal ini sering terjadi karena masalah kehabisan memori (OOM) atau jaringan. Jika tugas sebelumnya berhasil dijalankan dan Anda belum mengubah setelan konfigurasi jaringan, OOM adalah penyebab yang paling mungkin, sering kali akibat pengiriman banyak tugas yang berjalan secara bersamaan atau tugas yang driver-nya menggunakan banyak memori (misalnya, tugas yang memuat set data besar ke dalam memori).

No agent on master node(s) found to be active

Hal ini menunjukkan bahwa agen Dataproc di node master tidak aktif dan tidak dapat menerima tugas baru. Hal ini sering terjadi karena masalah kehabisan memori (OOM) atau masalah jaringan, atau jika VM node master tidak responsif. Jika tugas berhasil dijalankan sebelumnya dan Anda belum mengubah setelan konfigurasi jaringan, kemungkinan besar penyebabnya adalah OOM, yang sering kali disebabkan oleh pengiriman banyak tugas yang berjalan secara bersamaan atau tugas yang driver-nya menggunakan banyak memori (tugas yang memuat set data besar ke dalam memori).

Untuk membantu mengatasi masalah ini, coba lakukan tindakan berikut:

Task not found

Error ini menunjukkan bahwa cluster dihapus saat tugas sedang berjalan. Anda dapat melakukan tindakan berikut untuk mengidentifikasi entitas yang melakukan penghapusan dan mengonfirmasi bahwa penghapusan cluster terjadi saat tugas sedang berjalan:

  • Lihat log audit Dataproc untuk mengidentifikasi akun utama yang melakukan operasi penghapusan.

  • Gunakan Logging atau gcloud CLI untuk memeriksa bahwa status terakhir aplikasi YARN yang diketahui adalah RUNNING:

    • Gunakan filter berikut di Logging:
    resource.type="cloud_dataproc_cluster"
    resource.labels.cluster_name="CLUSTER_NAME"
    resource.labels.cluster_uuid="CLUSTER_UUID"
    "YARN_APPLICATION_ID State change from"
    
    • Jalankan gcloud dataproc jobs describe job-id --region=REGION, lalu periksa yarnApplications: > STATE dalam output.
  • Jika entitas yang menghapus cluster adalah akun layanan agen layanan Dataproc, periksa apakah cluster dikonfigurasi dengan durasi penghapusan otomatis yang lebih singkat dari durasi tugas.

Untuk menghindari error Task not found, gunakan otomatisasi untuk memastikan cluster tidak dihapus sebelum semua tugas yang sedang berjalan selesai.

No space left on device

Dataproc menulis data HDFS dan scratch ke disk. Pesan error ini menunjukkan bahwa cluster dibuat dengan kapasitas disk yang tidak mencukupi. Untuk menganalisis dan menghindari error ini:

  • Periksa ukuran disk utama cluster yang tercantum di tab Configuration di halaman Detail cluster di konsol Google Cloud . Ukuran disk minimum yang direkomendasikan adalah 1000 GB untuk cluster yang menggunakan jenis mesin n1-standard-4 dan 2 TB untuk cluster yang menggunakan jenis mesin n1-standard-32.

  • Jika ukuran disk cluster lebih kecil daripada ukuran yang direkomendasikan, buat ulang cluster dengan ukuran disk minimal yang direkomendasikan.

  • Jika ukuran disk adalah ukuran yang direkomendasikan atau lebih besar, gunakan SSH untuk terhubung ke VM master cluster, lalu jalankan df -h di VM master untuk memeriksa pemanfaatan disk guna menentukan apakah kapasitas disk tambahan diperlukan atau tidak.

  • Kumpulkan dan periksa metrik disk.

Pemantauan dan proses debug tugas

Gunakan Google Cloud CLI, Dataproc REST API, dan konsol Google Cloud untuk menganalisis dan men-debug tugas Dataproc.

gcloud CLI

Untuk memeriksa status tugas yang sedang berjalan:

gcloud dataproc jobs describe job-id \
    --region=region

Untuk melihat output driver tugas, baca bagian Melihat output tugas.

REST API

Panggil jobs.get untuk memeriksa JobStatus.State, JobStatus.Substate, JobStatus.details, dan kolom YarnApplication tugas.

Konsol

Untuk melihat output driver tugas, baca bagian Melihat output tugas.

Untuk melihat log agen Dataproc di Logging, pilih Dataproc Cluster→Cluster Name→Cluster UUID dari pemilih cluster Logs Explorer.

Kemudian, gunakan pemilih log untuk memilih log google.dataproc.agent.

Melihat log tugas di Logging

Jika tugas gagal, Anda dapat mengakses log tugas di Logging.

Menentukan siapa yang mengirimkan tugas

Mencari detail tugas akan menampilkan siapa yang mengirimkan tugas tersebut di kolom submittedBy. Misalnya, output tugas ini menunjukkan user@domain mengirimkan contoh tugas ke cluster.

...
placement:
  clusterName: cluster-name
  clusterUuid: cluster-uuid
reference:
  jobId: job-uuid
  projectId: project
status:
  state: DONE
  stateStartTime: '2018-11-01T00:53:37.599Z'
statusHistory:
- state: PENDING
  stateStartTime: '2018-11-01T00:33:41.387Z'
- state: SETUP_DONE
  stateStartTime: '2018-11-01T00:33:41.765Z'
- details: Agent reported job success
  state: RUNNING
  stateStartTime: '2018-11-01T00:33:42.146Z'
submittedBy: user@domain