EMRKetahanan Job Tanpa Server - Amazon EMR

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

EMRKetahanan Job Tanpa Server

EMRRilis tanpa server 7.1.0 dan yang lebih tinggi menyertakan dukungan untuk ketahanan pekerjaan, sehingga secara otomatis mencoba ulang pekerjaan yang gagal tanpa masukan manual dari Anda. Manfaat lain dari ketahanan kerja adalah bahwa EMR Serverless memindahkan pekerjaan ke Availability Zone (AZ) yang berbeda jika AZ mengalami masalah apa pun.

Untuk mengaktifkan ketahanan pekerjaan untuk suatu pekerjaan, tetapkan kebijakan coba lagi untuk pekerjaan Anda. Kebijakan coba lagi memastikan bahwa EMR Tanpa Server secara otomatis memulai ulang pekerjaan jika gagal pada titik mana pun. Kebijakan coba lagi didukung untuk pekerjaan batch dan streaming, sehingga Anda dapat menyesuaikan ketahanan pekerjaan sesuai dengan kasus penggunaan Anda. Tabel berikut membandingkan perilaku dan perbedaan ketahanan kerja di seluruh pekerjaan batch dan streaming.

Tugas Batch Lowongan kerja Streaming
Perilaku default Tidak menjalankan kembali pekerjaan. Selalu mencoba menjalankan pekerjaan karena aplikasi membuat pos pemeriksaan saat menjalankan pekerjaan.
Poin coba lagi Pekerjaan batch tidak memiliki pos pemeriksaan, jadi EMR Tanpa Server selalu menjalankan kembali pekerjaan dari awal. Pekerjaan streaming mendukung pos pemeriksaan, sehingga Anda dapat mengonfigurasi kueri streaming untuk menyimpan status waktu proses dan melanjutkan ke lokasi pos pemeriksaan di Amazon S3. EMRTanpa server melanjutkan pekerjaan yang dijalankan dari pos pemeriksaan. Untuk informasi selengkapnya, lihat Memulihkan dari kegagalan dengan Checkpointing di dokumentasi Apache Spark.
Maksimal upaya coba lagi Memungkinkan maksimal 10 percobaan ulang. Pekerjaan streaming memiliki kontrol pencegahan thrash bawaan, sehingga aplikasi berhenti mencoba lagi pekerjaan jika terus gagal setelah satu jam. Jumlah default percobaan ulang dalam satu jam adalah lima upaya. Anda dapat mengonfigurasi jumlah percobaan ulang ini menjadi antara 1 atau 10. Anda tidak dapat menyesuaikan jumlah upaya maksimum. Nilai 1 menunjukkan tidak ada percobaan ulang.

Saat EMR Serverless mencoba menjalankan kembali pekerjaan, pekerjaan tersebut juga mengindeks pekerjaan dengan nomor percobaan, sehingga Anda dapat melacak siklus hidup pekerjaan di seluruh upayanya.

Anda dapat menggunakan API operasi EMR Tanpa Server atau AWS CLI untuk mengubah ketahanan pekerjaan atau melihat informasi yang berkaitan dengan ketahanan kerja. Untuk informasi selengkapnya, lihat panduan EMRTanpa Server API.

Secara default, EMR Tanpa Server tidak menjalankan kembali pekerjaan batch. Untuk mengaktifkan percobaan ulang untuk pekerjaan batch, konfigurasikan maxAttempts parameter saat memulai pekerjaan batch. maxAttemptsParameter ini hanya berlaku untuk pekerjaan batch. Defaultnya adalah 1, yang berarti tidak menjalankan kembali pekerjaan. Nilai yang diterima adalah 1 hingga 10, inklusif.

Contoh berikut menunjukkan bagaimana menentukan jumlah maksimal 10 upaya ketika memulai pekerjaan berjalan.

aws emr-serverless start-job-run --application-id <APPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --mode 'BATCH' \ --retry-policy '{ "maxAttempts": 10 }' \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples-does-not-exist.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi" } }'

EMRTanpa server mencoba ulang pekerjaan streaming tanpa batas waktu jika gagal. Untuk mencegah meronta-ronta karena kegagalan berulang yang tidak dapat dipulihkan, gunakan maxFailedAttemptsPerHour untuk mengonfigurasi kontrol pencegahan thrash untuk streaming percobaan ulang pekerjaan. Parameter ini memungkinkan Anda menentukan jumlah maksimum upaya gagal yang diizinkan dengan satu jam sebelum EMR Serverless berhenti mencoba lagi. Defaultnya adalah lima. Nilai yang diterima adalah 1 hingga 10, inklusif.

aws emr-serverless start-job-run --application-id <APPPLICATION_ID> \ --execution-role-arn <JOB_EXECUTION_ROLE> \ --mode 'STREAMING' \ --retry-policy '{ "maxFailedAttemptsPerHour": 7 }' \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples-does-not-exist.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi" } }'

Anda juga dapat menggunakan API operasi lari pekerjaan lainnya untuk mendapatkan informasi tentang pekerjaan. Misalnya, Anda dapat menggunakan attempt parameter dengan GetJobRun operasi untuk mendapatkan detail tentang upaya pekerjaan tertentu. Jika Anda tidak menyertakan attempt parameter, operasi mengembalikan informasi tentang upaya terbaru.

aws emr-serverless get-job-run \ --job-run-id job-run-id \ --application-id application-id \ --attempt 1

ListJobRunAttemptsOperasi mengembalikan informasi tentang semua upaya yang terkait dengan menjalankan pekerjaan.

aws emr-serverless list-job-run-attempts \ --application-id application-id \ --job-run-id job-run-id

GetDashboardForJobRunOperasi membuat dan mengembalikan URL yang dapat Anda gunakan untuk mengakses aplikasi UIs untuk menjalankan pekerjaan. attemptParameter memungkinkan Anda mendapatkan URL untuk upaya tertentu. Jika Anda tidak menyertakan attempt parameter, operasi mengembalikan informasi tentang upaya terbaru.

aws emr-serverless get-dashboard-for-job-run \ --application-id application-id \ --job-run-id job-run-id \ --attempt 1

Memantau pekerjaan dengan kebijakan coba lagi

Dukungan ketahanan Job juga menambahkan acara baru EMRServerless job run retry. EMRTanpa server menerbitkan acara ini pada setiap percobaan ulang pekerjaan. Anda dapat menggunakan notifikasi ini untuk melacak percobaan ulang pekerjaan. Untuk informasi selengkapnya tentang acara, lihat EventBridge acara Amazon.

Logging dengan kebijakan coba lagi

Setiap kali EMR Serverless mencoba kembali pekerjaan, upaya tersebut menghasilkan kumpulan lognya sendiri. Untuk memastikan bahwa EMR Tanpa Server berhasil mengirimkan log ini ke Amazon S3 dan CloudWatch Amazon tanpa menimpa EMR apa pun, Tanpa Server menambahkan awalan ke format CloudWatch jalur log S3 dan nama aliran log untuk menyertakan nomor percobaan pekerjaan.

Berikut ini adalah contoh seperti apa formatnya.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'.

Format ini memastikan EMR Tanpa Server menerbitkan semua log untuk setiap upaya pekerjaan ke lokasi yang ditunjuk sendiri di Amazon S3 dan. CloudWatch Untuk detail selengkapnya, lihat Menyimpan log.

catatan

EMRTanpa server hanya menggunakan format awalan ini dengan semua pekerjaan streaming dan pekerjaan batch apa pun yang telah diaktifkan coba lagi.