Menggunakan kebijakan coba lagi pekerjaan - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan kebijakan coba lagi pekerjaan

Di Amazon EMR di EKS versi 6.9.0 dan yang lebih baru, Anda dapat menetapkan kebijakan coba lagi untuk menjalankan pekerjaan Anda. Kebijakan coba lagi menyebabkan pod driver pekerjaan dimulai ulang secara otomatis jika gagal atau dihapus. Ini membuat pekerjaan streaming Spark yang berjalan lama lebih tahan terhadap kegagalan.

Menetapkan kebijakan coba lagi untuk suatu pekerjaan

Untuk mengonfigurasi kebijakan coba lagi, Anda menyediakan RetryPolicyConfiguration bidang menggunakan StartJobRunAPI. Contoh retryPolicyConfiguration ditampilkan di sini:

aws emr-containers start-job-run \ --virtual-cluster-id cluster_id \ --name sample-job-name \ --execution-role-arn execution-role-arn \ --release-label emr-6.9.0-latest \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py", "entryPointArguments": [ "2" ], "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }' \ --retry-policy-configuration '{ "maxAttempts": 5 }' \ --configuration-overrides '{ "monitoringConfiguration": { "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group_name", "logStreamNamePrefix": "my_log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket" } } }'
catatan

retryPolicyConfigurationhanya tersedia dari versi AWS CLI 1.27.68 dan seterusnya. Untuk memperbarui AWS CLI ke versi terbaru, lihat Menginstal atau memperbarui versi terbaru AWS CLI

Konfigurasikan maxAttempts bidang dengan jumlah maksimum kali Anda ingin pod driver pekerjaan dimulai ulang jika gagal atau dihapus. Interval eksekusi antara dua upaya coba lagi pengemudi pekerjaan adalah interval percobaan ulang eksponensial (10 detik, 20 detik, 40 detik...) yang dibatasi pada 6 menit, seperti yang dijelaskan dalam dokumentasi Kubernetes.

catatan

Setiap eksekusi driver pekerjaan tambahan akan ditagih sebagai pekerjaan lain, dan akan dikenakan EMR Amazon pada harga EKS.

Coba lagi nilai konfigurasi kebijakan

  • Kebijakan coba ulang default untuk pekerjaan: StartJobRun menyertakan kebijakan coba ulang yang disetel ke 1 upaya maksimum secara default. Anda dapat mengonfigurasi kebijakan coba lagi sesuai keinginan.

    catatan

    Jika maxAttempts dari set ke 1, itu berarti tidak ada percobaan ulang yang akan dilakukan untuk memunculkan pod driver pada kegagalan. retryPolicyConfiguration

  • Menonaktifkan kebijakan coba lagi untuk pekerjaan: Untuk menonaktifkan kebijakan coba lagi, tetapkan nilai upaya maksimal ke 1. retryPolicyConfiguration

    "retryPolicyConfiguration": { "maxAttempts": 1 }
  • Setel MaxAttempt untuk pekerjaan dalam rentang yang valid: StartJobRun panggilan akan gagal jika maxAttempts nilainya berada di luar rentang yang valid. maxAttemptsRentang yang valid adalah dari 1 hingga 2.147.483.647 (32-bit integer), rentang yang didukung untuk pengaturan konfigurasi Kubernetes. backOffLimit Untuk informasi selengkapnya, lihat Kebijakan kegagalan backoff Pod di dokumentasi Kubernetes. Jika maxAttempts nilainya tidak valid, pesan galat berikut dikembalikan:

    { "message": "Retry policy configuration's parameter value of maxAttempts is invalid" }

Mengambil status kebijakan coba lagi untuk suatu pekerjaan

Anda dapat melihat status upaya coba lagi untuk pekerjaan dengan ListJobRunsdan DescribeJobRun APIs. Setelah Anda meminta pekerjaan dengan konfigurasi kebijakan coba ulang yang diaktifkan, DescribeJobRun respons ListJobRun dan akan berisi status kebijakan coba lagi di RetryPolicyExecution bidang. Selain itu, DescribeJobRun respon akan berisi RetryPolicyConfiguration yang dimasukkan dalam StartJobRun permintaan untuk pekerjaan itu.

Sampel tanggapan

ListJobRuns response
{ "jobRuns": [ ... ... "retryPolicyExecution" : { "currentAttemptCount": 2 } ... ... ] }
DescribeJobRun response
{ ... ... "retryPolicyConfiguration": { "maxAttempts": 5 }, "retryPolicyExecution" : { "currentAttemptCount": 2 }, ... ... }

Kolom ini tidak akan terlihat saat kebijakan coba ulang dinonaktifkan dalam pekerjaan, seperti yang dijelaskan di Coba lagi nilai konfigurasi kebijakan bawah ini.

Memantau pekerjaan dengan kebijakan coba lagi

Saat Anda mengaktifkan kebijakan coba lagi, CloudWatch peristiwa akan dibuat untuk setiap driver pekerjaan yang dibuat. Untuk berlangganan acara ini, siapkan aturan CloudWatch acara menggunakan perintah berikut:

aws events put-rule \ --name cwe-test \ --event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'

Acara ini akan mengembalikan informasi tentangnewDriverPodName, newDriverCreatedAt stempel waktupreviousDriverFailureMessage, dan currentAttemptCount driver pekerjaan. Peristiwa ini tidak akan dibuat jika kebijakan coba lagi dinonaktifkan.

Untuk informasi selengkapnya tentang cara memantau pekerjaan Anda dengan CloudWatch acara, lihatPantau pekerjaan dengan Amazon CloudWatch Events.

Menemukan log untuk driver dan pelaksana

Nama pod driver mengikuti formatnyaspark-<job id>-driver-<random-suffix>. random-suffixHal yang sama ditambahkan ke nama pod eksekutor yang muncul driver. Saat Anda menggunakan inirandom-suffix, Anda dapat menemukan log untuk driver dan pelaksana terkait. Hanya random-suffix ada jika kebijakan coba lagi diaktifkan untuk pekerjaan; jika tidak, tidak random-suffix ada.

Untuk informasi selengkapnya tentang cara mengonfigurasi pekerjaan dengan konfigurasi pemantauan untuk pencatatan, lihatJalankan aplikasi Spark.