Menggunakan kebijakan coba ulang 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 ulang pekerjaan

Di Amazon EMR pada EKS versi 6.9.0 dan yang lebih baru, Anda dapat menetapkan kebijakan coba ulang untuk pekerjaan Anda berjalan. Coba lagi kebijakan 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 ulang untuk suatu pekerjaan

Untuk mengonfigurasi kebijakan coba ulang, Anda menyediakanRetryPolicyConfigurationbidang menggunakanStartJobRunAPI. ContohretryPolicyConfigurationditampilkan 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://DOC-EXAMPLE-BUCKET-LOGGING" } } }'
catatan

retryPolicyConfigurationhanya tersedia dariAWS CLI1.27.68 versi dan seterusnya. Untuk memperbaruiAWS CLIke versi terbaru, lihatMenginstal atau memperbarui versi terbaru dariAWS CLI

KonfigurasikanmaxAttemptsfield dengan jumlah maksimum yang kamu inginkan agar pod driver job di-restart jika gagal atau dihapus. Interval eksekusi antara dua upaya coba ulang pengemudi pekerjaan adalah interval percobaan ulang eksponensial (10 detik, 20 detik, 40 detik...) yang dibatasi pada 6 menit, seperti yang dijelaskan dalamDokumentasi Kubernetes.

catatan

Setiap eksekusi pengemudi pekerjaan tambahan akan ditagih sebagai pekerjaan lain, dan akan dikenakanAmazon EMR pada harga EKS.

Coba lagi nilai konfigurasi kebijakan

  • Kebijakan coba ulang default untuk suatu pekerjaan: StartJobRunmenyertakan kebijakan coba lagi yang ditetapkan ke 1 upaya maksimum secara default. Anda dapat mengonfigurasi kebijakan coba lagi sesuai keinginan.

    catatan

    JikamaxAttemptsdariretryPolicyConfigurationdiatur ke 1, itu berarti tidak ada percobaan ulang yang akan dilakukan untuk memunculkan pod driver pada kegagalan.

  • Menonaktifkan kebijakan coba lagi untuk suatu pekerjaan:Untuk menonaktifkan kebijakan coba lagi, tetapkan nilai upaya maks diretryPolicyConfigurationuntuk 1.

    "retryPolicyConfiguration": { "maxAttempts": 1 }
  • Tetapkan MaxUpaya untuk pekerjaan dalam rentang yang valid: StartJobRunpanggilan akan gagal jikamaxAttemptsnilai berada di luar rentang yang valid. Yang validmaxAttemptsRentang adalah dari 1 hingga 2.147.483.647 (32-bit integer), rentang yang didukung untuk Kubernetes 'backOffLimitpengaturan konfigurasi. Untuk informasi lebih lanjut, lihatKebijakan kegagalan Pod backoffdalam dokumentasi Kubernetes. JikamaxAttemptsnilai tidak valid, pesan galat berikut dikembalikan:

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

Mengambil status kebijakan percobaan ulang untuk suatu pekerjaan

Anda dapat melihat status upaya percobaan ulang untuk pekerjaan denganListJobRunsdanDescribeJobRunAPI. Setelah Anda meminta pekerjaan dengan konfigurasi kebijakan coba ulang yang diaktifkan,ListJobRundanDescribeJobRuntanggapan akan berisi status kebijakan coba lagi diRetryPolicyExecutionbidang. Selain itu,DescribeJobRunrespon akan berisiRetryPolicyConfigurationyang masukan diStartJobRunpermintaan untuk pekerjaan itu.

Respons sampel

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

Bidang ini tidak akan terlihat ketika kebijakan coba lagi dinonaktifkan dalam pekerjaan, seperti yang dijelaskan di bawah ini diCoba lagi nilai konfigurasi kebijakan.

Memantau pekerjaan dengan kebijakan coba lagi

Saat Anda mengaktifkan kebijakan coba ulang, aCloudWatchacara yang dihasilkan untuk setiap driver pekerjaan yang dibuat. Untuk berlangganan acara ini, siapkanCloudWatchaturan 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,newDriverCreatedAtstempel waktu,previousDriverFailureMessage, dancurrentAttemptCountdari pengemudi pekerjaan. Peristiwa ini tidak akan dibuat jika kebijakan coba lagi dinonaktifkan.

Untuk informasi lebih lanjut tentang cara memantau pekerjaan Anda denganCloudWatchperistiwa, lihatPantau pekerjaan dengan Amazon CloudWatch Events.

Menemukan log untuk driver dan pelaksana

Nama pod driver mengikuti formatspark-<job id>-driver-<random-suffix>. Samarandom-suffixditambahkan ke nama pod pelaksana yang dihasilkan pengemudi. Bila Anda menggunakan inirandom-suffix, Anda dapat menemukan log untuk driver dan pelaksana terkait. Yangrandom-suffixhanya hadir jikakebijakan coba lagi diaktifkanuntuk pekerjaan; jika tidak,random-suffixtidak ada.

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