Pembatalan pekerjaan EMR Tanpa Server dengan masa tenggang - Amazon EMR

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

Pembatalan pekerjaan EMR Tanpa Server dengan masa tenggang

Dalam sistem pemrosesan data, penghentian mendadak dapat menyebabkan pemborosan sumber daya, operasi yang tidak lengkap, dan potensi inkonsistensi data. Amazon EMR Tanpa Server memungkinkan Anda menentukan masa tenggang saat membatalkan pekerjaan berjalan. Fitur ini memungkinkan waktu untuk pembersihan yang tepat dan penyelesaian pekerjaan yang sedang berlangsung sebelum pemutusan hubungan kerja.

Saat membatalkan pekerjaan, Anda dapat menentukan masa tenggang (dalam detik) menggunakan parameter di shutdownGracePeriodInSeconds mana pekerjaan dapat melakukan operasi pembersihan sebelum penghentian akhir. Perilaku dan pengaturan default bervariasi antara pekerjaan batch dan streaming.

Masa Tenggang Untuk pekerjaan batch

Untuk pekerjaan batch, EMR Tanpa Server memungkinkan Anda menerapkan operasi pembersihan khusus yang dijalankan selama masa tenggang. Anda dapat mendaftarkan operasi pembersihan ini sebagai bagian dari hook shutdown JVM dalam kode aplikasi Anda.

Perilaku default

Perilaku default untuk shutdown adalah tidak memiliki masa tenggang. Ini terdiri dari dua tindakan berikut:

  • Pengakhiran segera

  • Sumber daya segera dirilis

Opsi konfigurasi

Anda dapat menentukan pengaturan yang menghasilkan shutdown yang anggun:

  • Rentang yang Valid untuk Masa tenggang Shutdown: 15-1800 detik (opsional)

  • Pengakhiran segera (tanpa masa tenggang): 0 detik

Aktifkan shutdown yang anggun

Untuk menerapkan shutdown yang anggun untuk pekerjaan batch, ikuti langkah-langkah berikut:

  1. Tambahkan shutdown hook dalam kode aplikasi Anda yang berisi logika shutdown kustom.

    Example in Scala
    import org.apache.hadoop.util.ShutdownHookManager // Register shutdown hook with priority (second argument) // Higher priority hooks run first ShutdownHookManager.get().addShutdownHook(() => { logger.info("Performing cleanup operations...") }, 100)

    Menggunakan ShutdownHookManager

    Example in PySpark
    import atexit def cleanup(): # Your cleanup logic here print("Performing cleanup operations...") # Register the cleanup function atexit.register(cleanup)
  2. Tentukan masa tenggang saat membatalkan pekerjaan untuk memberikan waktu bagi kait yang ditambahkan di atas untuk dieksekusi

    Contoh

    # Default (immediate termination) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID # With 5-minute grace period aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID \ --shutdown-grace-period-in-seconds 300

Masa Tenggang Untuk Pekerjaan Streaming

Dalam Spark Structured Streaming, di mana perhitungan melibatkan membaca dari atau menulis ke sumber data eksternal, shutdown tiba-tiba dapat menyebabkan hasil yang tidak diinginkan. Streaming pekerjaan memproses data dalam batch mikro, dan mengganggu operasi ini di tengah jalan dapat menghasilkan pemrosesan duplikat dalam upaya berikutnya. Ini terjadi ketika pos pemeriksaan terbaru dari batch mikro sebelumnya tidak ditulis, menyebabkan data yang sama diproses lagi ketika pekerjaan streaming dimulai ulang. Pemrosesan duplikat semacam itu tidak hanya menyia-nyiakan sumber daya komputasi tetapi juga dapat memengaruhi operasi bisnis, sehingga penting untuk menghindari penutupan mendadak.

EMR Tanpa Server menyediakan dukungan bawaan untuk shutdown yang anggun melalui pendengar kueri streaming. Ini memastikan penyelesaian yang tepat dari batch mikro yang sedang berlangsung sebelum pemutusan hubungan kerja. Layanan ini secara otomatis mengelola shutdown yang anggun antara batch mikro untuk aplikasi streaming, memastikan bahwa batch mikro saat ini menyelesaikan pemrosesan, pos pemeriksaan ditulis dengan benar, dan konteks streaming dihentikan dengan bersih tanpa menelan data baru selama proses shutdown.

Perilaku default

  • Masa tenggang 120 detik diaktifkan secara default.

  • Pendengar kueri streaming bawaan mengelola shutdown yang anggun.

Opsi konfigurasi

  • Rentang yang Valid untuk Masa tenggang Shutdown: 15-1800 detik (opsional)

  • Pengakhiran Segera: 0 detik

Aktifkan Shutdown Anggun

Untuk menerapkan shutdown yang anggun untuk pekerjaan streaming:

Tentukan masa tenggang saat membatalkan pekerjaan untuk memberikan waktu bagi batch mikro yang sedang berlangsung untuk diselesaikan.

Contoh

# Default graceful shutdown (120 seconds) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID # Custom grace period (e.g. 300 seconds) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID \ --shutdown-grace-period-in-seconds 300 # Immediate Termination aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID \ --shutdown-grace-period-in-seconds 0

Tambahkan kait shutdown kustom (opsional)

Sementara EMR Serverless mengelola shutdown yang anggun secara default melalui pendengar kueri streaming bawaannya, Anda dapat secara opsional menerapkan logika shutdown khusus untuk kueri streaming individual. EMR Tanpa Server mendaftarkan pendengar shutdown yang anggun dengan prioritas 60 (menggunakan). ShutdownHookManager Karena kait prioritas yang lebih tinggi dijalankan terlebih dahulu, Anda dapat mendaftarkan operasi pembersihan khusus Anda dengan prioritas lebih besar dari 60 untuk memastikannya dijalankan sebelum proses shutdown EMR Serverless dimulai.

Untuk menambahkan hook khusus, lihat contoh pertama dalam topik ini yang menunjukkan cara menambahkan hook shutdown dalam kode aplikasi Anda. Di sini, 100 adalah prioritas, yang lebih besar dari 60. Oleh karena itu kait shutdown seperti itu akan berjalan lebih dulu.

catatan

Kait shutdown khusus bersifat opsional dan tidak diperlukan untuk fungsionalitas shutdown yang anggun, yang ditangani secara otomatis oleh EMR Tanpa Server.

Biaya Masa Tenggang dan Durasi Batch

Jika nilai default untuk masa tenggang (120 detik) digunakan:

  • Jika durasi batch Anda kurang dari 120 detik, Anda hanya akan dikenakan biaya untuk waktu aktual yang diperlukan untuk menyelesaikan batch.

  • Jika durasi batch Anda melebihi 120 detik, Anda akan dikenakan biaya untuk masa tenggang maksimum (120 detik), tetapi kueri mungkin tidak dimatikan dengan baik karena akan dihentikan secara paksa.

Untuk mengoptimalkan biaya dan memastikan shutdown yang anggun:

  • Untuk durasi batch > 120 detik: Pertimbangkan untuk meningkatkan masa tenggang agar sesuai dengan durasi batch Anda

  • Untuk durasi batch <120 detik: Tidak perlu menyesuaikan masa tenggang karena Anda hanya akan dikenakan biaya untuk waktu pemrosesan yang sebenarnya

Pertimbangan

Perilaku Masa Tenggang

  • Masa tenggang menyediakan waktu agar kait shutdown terdaftar Anda selesai.

  • Job berakhir segera setelah shutdown hook selesai bahkan jika itu jauh sebelum masa tenggang.

  • Jika operasi pembersihan melebihi masa tenggang, pekerjaan akan dihentikan secara paksa.

Perilaku Layanan

  • Penutupan masa tenggang hanya tersedia untuk pekerjaan dalam status RUNNING.

  • Permintaan pembatalan berikutnya selama status CANCELLING diabaikan.

  • Jika EMR Tanpa Server gagal memulai penutupan masa tenggang karena kesalahan layanan internal:

    • Layanan akan mencoba lagi hingga 2 menit.

    • Jika percobaan ulang tidak berhasil, pekerjaan akan dihentikan secara paksa.

Penagihan

Pekerjaan ditagih untuk sumber daya komputasi yang digunakan sampai pekerjaan benar-benar ditutup, termasuk waktu yang diambil selama masa tenggang.