Penyetelan kinerja untuk Apache Airflow di Amazon MWAA - Amazon Managed Workflows for Apache Airflow (MWAA)

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

Penyetelan kinerja untuk Apache Airflow di Amazon MWAA

Topik ini menjelaskan cara menyetel kinerja Alur Kerja Terkelola Amazon untuk lingkungan Apache Airflow menggunakan. Menggunakan opsi konfigurasi Apache Airflow di Amazon MWAA

Menambahkan opsi konfigurasi Apache Airflow

Prosedur berikut memandu Anda melalui langkah-langkah menambahkan opsi konfigurasi Aliran Udara ke lingkungan Anda.

  1. Buka halaman Lingkungan di konsol Amazon MWAA.

  2. Pilih lingkungan.

  3. Pilih Edit.

  4. Pilih Berikutnya.

  5. Pilih Tambahkan konfigurasi khusus di panel Opsi konfigurasi Aliran Udara.

  6. Pilih konfigurasi dari daftar dropdown dan masukkan nilai, atau ketik konfigurasi khusus dan masukkan nilai.

  7. Pilih Tambahkan konfigurasi khusus untuk setiap konfigurasi yang ingin Anda tambahkan.

  8. Pilih Simpan.

Untuk mempelajari selengkapnya, lihat Menggunakan opsi konfigurasi Apache Airflow di Amazon MWAA.

Penjadwal Aliran Udara Apache

Penjadwal Apache Airflow adalah komponen inti dari Apache Airflow. Masalah dengan penjadwal dapat DAGs mencegah penguraian dan tugas dijadwalkan. Untuk informasi selengkapnya tentang penyetelan penjadwal Apache Airflow, lihat Menyesuaikan kinerja penjadwal Anda di situs web dokumentasi Apache Airflow.

Parameter

Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk penjadwal Apache Airflow dan kasus penggunaannya.

Apache Airflow v2
Versi Opsi Konfigurasi Default Deskripsi Kasus penggunaan

v2

celery.sync_parallelism

1

Jumlah proses yang digunakan Celery Executor untuk menyinkronkan status tugas.

Anda dapat menggunakan opsi ini untuk mencegah konflik antrian dengan membatasi proses yang digunakan Celery Executor. Secara default, nilai diatur 1 untuk mencegah kesalahan dalam mengirimkan log tugas ke CloudWatch Log. Menyetel nilai 0 berarti menggunakan jumlah maksimum proses, tetapi dapat menyebabkan kesalahan saat mengirimkan log tugas.

v2

scheduler.idle_sleep_time

1

Jumlah detik untuk menunggu antara pemrosesan file DAG berturut-turut di “loop” Scheduler.

Anda dapat menggunakan opsi ini untuk membebaskan penggunaan CPU pada Scheduler dengan meningkatkan waktu Scheduler tidur setelah selesai mengambil hasil penguraian DAG, menemukan dan mengantri tugas, dan menjalankan tugas antrian di Pelaksana. Meningkatkan nilai ini menghabiskan jumlah thread Scheduler yang dijalankan di lingkungan scheduler.parsing_processes untuk Apache Airflow v2 dan scheduler.max_threads untuk Apache Airflow v1. Ini dapat mengurangi kapasitas Schedulers untuk mengurai DAGs, dan meningkatkan waktu yang diperlukan DAGs untuk muncul di server Web.

v2

scheduler.max_dagruns_to_create_per_loop

10

Jumlah maksimum yang DAGs harus dibuat DagRunsuntuk per Scheduler “loop.”

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya untuk menjadwalkan tugas dengan mengurangi jumlah maksimum DagRunsuntuk “loop” Scheduler.

v2

scheduler.parsing_processes

Atur menggunakan rumus berikut: secara (2 * number of vCPUs) - 1 default.

Jumlah thread Scheduler dapat berjalan secara paralel dengan jadwal DAGs.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan mengurangi jumlah proses yang dijalankan Scheduler secara paralel untuk mengurai. DAGs Kami menyarankan agar angka ini tetap rendah jika penguraian DAG memengaruhi penjadwalan tugas. Anda harus menentukan nilai yang kurang dari jumlah vCPU di lingkungan Anda. Untuk mempelajari lebih lanjut, lihat Batas.

Batas

Bagian ini menjelaskan batasan yang harus Anda pertimbangkan saat menyesuaikan parameter default untuk penjadwal.

scheduler.parsing_processes, scheduler.max_threads

Dua utas diperbolehkan per vCPU untuk kelas lingkungan. Setidaknya satu utas harus disediakan untuk penjadwal untuk kelas lingkungan. Jika Anda melihat keterlambatan dalam tugas yang dijadwalkan, Anda mungkin perlu meningkatkan kelas lingkungan Anda. Misalnya, lingkungan yang besar memiliki instance kontainer Fargate 4 vCPU untuk penjadwalnya. Ini berarti bahwa maksimum 7 total utas tersedia untuk digunakan untuk proses lain. Artinya, dua utas dikalikan empat vCPUs, minus satu untuk penjadwal itu sendiri. Nilai yang Anda tentukan scheduler.max_threads dan tidak scheduler.parsing_processes boleh melebihi jumlah utas yang tersedia untuk kelas lingkungan (seperti yang ditunjukkan, di bawah ini:

  • mw1.small — Tidak boleh melebihi 1 thread untuk proses lainnya. Thread yang tersisa dicadangkan untuk Scheduler.

  • mw1.medium — Tidak boleh melebihi 3 thread untuk proses lainnya. Thread yang tersisa dicadangkan untuk Scheduler.

  • mw1.large - Tidak boleh melebihi 7 utas untuk proses lainnya. Thread yang tersisa dicadangkan untuk Scheduler.

Folder DAG

Penjadwal Aliran Udara Apache terus memindai DAGs folder di lingkungan Anda. plugins.zipFile apa pun yang berisi, atau file Python (.py) yang berisi pernyataan impor “aliran udara”. Setiap objek Python DAG yang dihasilkan kemudian ditempatkan ke dalam file yang akan diproses oleh Scheduler untuk menentukan apa, jika ada, tugas yang perlu dijadwalkan. DagBag Penguraian file Dag terjadi terlepas dari apakah file berisi objek DAG yang layak.

Parameter

Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk DAGs folder dan kasus penggunaannya.

Apache Airflow v2
Versi Opsi Konfigurasi Default Deskripsi Kasus penggunaan

v2

scheduler.dag_dir_list_interval

300 detik

Jumlah detik DAGs folder harus dipindai untuk file baru.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik untuk mengurai DAGs folder. Kami merekomendasikan untuk meningkatkan nilai ini jika Anda melihat waktu penguraian yang lamatotal_parse_time metrics, yang mungkin disebabkan oleh sejumlah besar file di DAGs folder Anda.

v2

scheduler.min_file_process_interval

30 detik

Jumlah detik setelah penjadwal mem-parsing DAG dan pembaruan ke DAG tercermin.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik yang menunggu penjadwal sebelum menguraikan DAG. Misalnya, jika Anda menentukan nilai30, file DAG diurai setelah setiap 30 detik. Kami menyarankan agar angka ini tetap tinggi untuk mengurangi penggunaan CPU di lingkungan Anda.

File DAG

Sebagai bagian dari loop scheduler Apache Airflow, file DAG individual diurai untuk mengekstrak objek DAG Python. Di Apache Airflow v2 dan di atasnya, scheduler mem-parsing maksimum jumlah proses parsing secara bersamaan. Jumlah detik yang ditentukan scheduler.min_file_process_interval harus lewat sebelum file yang sama diurai lagi.

Parameter

Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk file Apache Airflow DAG dan kasus penggunaannya.

Apache Airflow v2
Versi Opsi Konfigurasi Default Deskripsi Kasus penggunaan

v2

core.dag_file_processor_timeout

50 detik

Jumlah detik sebelum DagFileProcessorwaktu habis memproses file DAG.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan waktu yang dibutuhkan sebelum DagFileProcessorwaktu habis. Kami merekomendasikan untuk meningkatkan nilai ini jika Anda melihat batas waktu di log pemrosesan DAG Anda yang menghasilkan tidak ada pemuatan yang DAGs layak.

v2

core.dagbag_import_timeout

30 detik

Jumlah detik sebelum mengimpor file Python habis waktu.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan waktu yang diperlukan sebelum waktu Penjadwal habis saat mengimpor file Python untuk mengekstrak objek DAG. Opsi ini diproses sebagai bagian dari “loop” Scheduler, dan harus berisi nilai yang lebih rendah dari nilai yang ditentukan dalamcore.dag_file_processor_timeout.

v2

core.min_serialized_dag_update_interval

30

Jumlah minimum detik setelah serial DAGs dalam database diperbarui.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik setelah serial DAGs dalam database diperbarui. Kami merekomendasikan untuk meningkatkan nilai ini jika Anda memiliki sejumlah besar DAGs, atau kompleks DAGs. Meningkatkan nilai ini mengurangi beban pada Scheduler dan database seperti yang DAGs diserialkan.

v2

core.min_serialized_dag_fetch_interval

10

Jumlah detik DAG serial diambil kembali dari database saat sudah dimuat di file. DagBag

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik DAG serial diambil kembali. Nilai harus lebih tinggi dari nilai yang ditentukan core.min_serialized_dag_update_interval untuk mengurangi tingkat “tulis” database. Meningkatkan nilai ini mengurangi beban pada server Web dan database seperti yang DAGs diserialkan.

Tugas

Penjadwal dan pekerja Apache Airflow sama-sama terlibat dalam tugas antrian dan de-antrian. Penjadwal mengambil tugas yang diuraikan yang siap dijadwalkan dari status Tidak Ada ke status Terjadwal. Pelaksana, juga berjalan pada wadah penjadwal di Fargate, mengantri tugas-tugas itu dan menetapkan statusnya ke Antrian. Ketika pekerja memiliki kapasitas, ia mengambil tugas dari antrian dan menetapkan status ke Running, yang kemudian mengubah statusnya menjadi Sukses atau Gagal berdasarkan apakah tugas berhasil atau gagal.

Parameter

Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk tugas Apache Airflow dan kasus penggunaannya.

Opsi konfigurasi default yang ditimpa Amazon MWAA ditandai. red

Apache Airflow v2
Versi Opsi Konfigurasi Default Deskripsi Kasus penggunaan

v2

inti.paralelisme

Dinamis diatur berdasarkan(maxWorkers * maxCeleryWorkers) / schedulers * 1.5.

Jumlah maksimum instance tugas yang dapat memiliki status “Running.”

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah instance tugas yang dapat dijalankan secara bersamaan. Nilai yang ditentukan harus berupa jumlah Pekerja yang tersedia “kali” kepadatan tugas Pekerja. Kami merekomendasikan untuk mengubah nilai ini hanya ketika Anda melihat sejumlah besar tugas terjebak dalam status “Berlari” atau “Antrian”.

v2

core.dag_concurrency

10000

Jumlah instance tugas yang diizinkan untuk dijalankan secara bersamaan untuk setiap DAG.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah instance tugas yang diizinkan untuk dijalankan secara bersamaan. Misalnya, jika Anda memiliki seratus DAGs dengan sepuluh tugas paralel, dan Anda DAGs ingin semuanya berjalan secara bersamaan, Anda dapat menghitung paralelisme maksimum sebagai jumlah Pekerja yang tersedia “kali” kepadatan tugas Pekerjacelery.worker_concurrency, dibagi dengan jumlah DAGs (misalnya 100).

v2

core.execute_tasks_new_python_penerjemah

True

Menentukan apakah Apache Airflow menjalankan tugas dengan melakukan fork pada proses induk, atau dengan membuat proses Python baru.

Ketika diatur keTrue, Apache Airflow mengenali perubahan yang Anda buat pada plugin Anda sebagai proses Python baru sehingga dibuat untuk menjalankan tugas.

v2

celery.worker_concurrency

N/A

Amazon MWAA mengesampingkan instalasi basis Airflow untuk opsi ini untuk menskalakan Pekerja sebagai bagian dari komponen penskalaan otomatisnya.

Any value specified for this option is ignored.

v2

seledry.worker_autoscale

mw1.mikro - 3,0

mw1.small - 5,0

mw1.medium - 10,0

mw1.large - 20,0

mw1.xlarge - 40,0

mw1.2xlarge - 80,0

Konkurensi tugas untuk Pekerja.

Anda dapat menggunakan opsi ini untuk membebaskan sumber daya dengan mengurangi maximum konkurensi minimum tugas Pekerja. Pekerja menerima hingga tugas maximum bersamaan yang dikonfigurasi, terlepas dari apakah ada sumber daya yang cukup untuk melakukannya. Jika tugas dijadwalkan tanpa sumber daya yang memadai, tugas segera gagal. Kami merekomendasikan mengubah nilai ini untuk tugas intensif sumber daya dengan mengurangi nilai menjadi kurang dari default untuk memungkinkan lebih banyak kapasitas per tugas.