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 menggunakanMenggunakan opsi konfigurasi Apache Airflow di Amazon MWAA.
Menambahkan opsi konfigurasi Apache Airflow
Gunakan prosedur berikut untuk menambahkan opsi konfigurasi Aliran Udara ke lingkungan Anda.
-
Buka halaman Lingkungan di konsol Amazon MWAA.
-
Pilih lingkungan.
-
Pilih Edit.
-
Pilih Berikutnya.
-
Pilih Tambahkan konfigurasi kustom di panel opsi konfigurasi aliran udara.
-
Pilih konfigurasi dari daftar dropdown dan masukkan nilai, atau masukkan konfigurasi khusus dan masukkan nilai.
-
Pilih Tambahkan konfigurasi khusus untuk setiap konfigurasi yang ingin Anda tambahkan.
-
Pilih Simpan.
Untuk mempelajari lebih lanjut, lihatMenggunakan opsi konfigurasi Apache Airflow di Amazon MWAA.
Penjadwal Apache Airflow
Penjadwal Apache Airflow adalah komponen inti dari Apache Airflow. Masalah dengan penjadwal dapat mencegah DAG diurai dan tugas tidak dijadwalkan. Untuk informasi selengkapnya tentang penyetelan penjadwal Apache Airflow, lihat kinerja penjadwal Fine-tuning Anda di situs dokumentasi Apache Airflow.
Parameter
Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk penjadwal Apache Airflow (Apache Airflow v2 dan yang lebih baru) dan kasus penggunaannya.
- Apache Airflow v3
-
| Konfigurasi |
Kasus penggunaan |
|
celery.sync_paralelisme
Jumlah proses yang digunakan Celery Executor untuk menyinkronkan status tugas.
Standar: 1
|
Gunakan 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 ke 0 berarti menggunakan jumlah proses maksimum, tetapi dapat menyebabkan kesalahan saat mengirimkan log tugas.
|
|
penjadwal.scheduler_idle_time_tidur
Jumlah detik untuk menunggu antara “loop” penjadwal berturut-turut jika tidak ada yang bisa dilakukan dalam loop.
Standar: 1
|
Gunakan opsi ini untuk membebaskan penggunaan CPU pada penjadwal dengan meningkatkan waktu penjadwal tidur setelah menyelesaikan “loop.” Meningkatkan nilai ini mengurangi thread penjadwal yang tersedia dag_processor.parsing_processes untuk Apache Airflow v2 dan Apache Airflow v3. Ini dapat mengurangi kapasitas penjadwal untuk mengurai DAG, dan meningkatkan waktu yang dibutuhkan DAG untuk mengisi di server web.
|
|
penjadwal.max_dagruns_to_create_per_loop
Jumlah maksimum DAG yang akan dibuat DagRuns untuk per “loop” penjadwal.
Default: 10
|
Gunakan opsi ini untuk membebaskan sumber daya untuk tugas penjadwalan dengan mengurangi jumlah maksimum DagRuns untuk “loop” penjadwal.
|
|
dag_processor.parsing_proses
Jumlah thread yang dapat dijalankan penjadwal secara paralel untuk menjadwalkan DAG.
Default: Gunakan (2 * number of vCPUs) - 1
|
Gunakan opsi ini untuk membebaskan sumber daya dengan mengurangi jumlah proses yang dijalankan penjadwal secara paralel untuk mengurai DAG. Sebaiknya pertahankan 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 B atas.
|
- Apache Airflow v2
-
| Konfigurasi |
Kasus penggunaan |
|
celery.sync_paralelisme
Jumlah proses yang digunakan Celery Executor untuk menyinkronkan status tugas.
Standar: 1
|
Gunakan 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 ke 0 berarti menggunakan jumlah proses maksimum, tetapi dapat menyebabkan kesalahan saat mengirimkan log tugas.
|
|
penjadwal.scheduler_idle_time_tidur
Jumlah detik untuk menunggu antara “loop” penjadwal berturut-turut jika tidak ada yang bisa dilakukan dalam loop.
Standar: 1
|
Gunakan opsi ini untuk membebaskan penggunaan CPU pada penjadwal dengan meningkatkan waktu penjadwal tidur setelah menyelesaikan “loop.” Meningkatkan nilai ini mengurangi thread penjadwal yang tersedia dag_processor.parsing_processes untuk Apache Airflow v2 dan Apache Airflow v3. Ini dapat mengurangi kapasitas penjadwal untuk mengurai DAG, dan meningkatkan waktu yang dibutuhkan DAG untuk mengisi di server web.
|
|
penjadwal.max_dagruns_to_create_per_loop
Jumlah maksimum DAG yang akan dibuat DagRuns untuk per “loop” penjadwal.
Default: 10
|
Gunakan opsi ini untuk membebaskan sumber daya untuk tugas penjadwalan dengan mengurangi jumlah maksimum DagRuns untuk “loop” penjadwal.
|
|
penjadwal.parsing_proses
Jumlah thread yang dapat dijalankan penjadwal secara paralel untuk menjadwalkan DAG.
Default: Gunakan (2 * number of vCPUs) - 1
|
Gunakan opsi ini untuk membebaskan sumber daya dengan mengurangi jumlah proses yang dijalankan penjadwal secara paralel untuk mengurai DAG. Sebaiknya pertahankan 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 B atas.
|
Batas
Bagian ini menjelaskan batasan yang perlu dipertimbangkan saat menyesuaikan parameter default untuk penjadwal.
- scheduler.parsing_processing, scheduler.max_thread (hanya v2)
-
Dua utas diperbolehkan per vCPU untuk kelas lingkungan. Setidaknya satu thread harus dicadangkan untuk penjadwal untuk kelas lingkungan. Jika Anda melihat keterlambatan dalam tugas yang dijadwalkan, Anda mungkin perlu meningkatkan kelas lingkungan Anda. Misalnya, lingkungan besar memiliki instance container 4 vCPU Fargate untuk penjadwalnya. Ini berarti bahwa maksimum 7 total utas tersedia untuk digunakan untuk proses lain. Artinya, dua utas dikalikan empat vCPU, minus satu untuk penjadwal itu sendiri. Nilai yang Anda tentukan di scheduler.max_threads (v2 saja) dan tidak scheduler.parsing_processes boleh melebihi jumlah thread yang tersedia untuk kelas lingkungan, seperti yang tercantum:
-
mw1.small — Tidak boleh melebihi 1 thread untuk proses lain. Thread yang tersisa dicadangkan untuk penjadwal.
-
mw1.medium — Tidak boleh melebihi 3 thread untuk proses lain. Thread yang tersisa dicadangkan untuk penjadwal.
-
mw1.large — Tidak boleh melebihi 7 thread untuk proses lain. Thread yang tersisa dicadangkan untuk penjadwal.
Folder DAG
Penjadwal Apache Airflow terus memindai folder DAGs di lingkungan Anda. Setiap plugins.zip file yang terkandung, atau file Python (.py) yang berisi pernyataan impor “aliran udara”. Setiap objek Python DAG yang dihasilkan kemudian ditempatkan ke dalam file tersebut DagBag untuk diproses oleh penjadwal untuk menentukan tugas apa, jika ada, yang perlu dijadwalkan. Penguraian file Dag terjadi terlepas dari apakah file tersebut berisi objek DAG yang layak.
Parameter
Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk folder DAG (Apache Airflow v2 dan yang lebih baru) dan kasus penggunaannya.
- Apache Airflow v3
-
| Konfigurasi |
Kasus penggunaan |
|
dag_processor.refresh interval
Jumlah detik folder DAGs harus dipindai untuk file baru.
Default: 300 detik
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik untuk mengurai folder DAG. Sebaiknya tingkatkan nilai ini jika Anda mengalami waktu penguraian yang lamatotal_parse_time metrics, yang mungkin disebabkan oleh sejumlah besar file di folder DAG Anda.
|
|
dag_processor.min_file_process_interval
Jumlah detik setelah penjadwal mengurai DAG dan pembaruan untuk DAG tercermin.
Default: 30 detik
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik yang ditunggu oleh penjadwal sebelum mengurai 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.
|
- Apache Airflow v2
-
| Konfigurasi |
Kasus penggunaan |
|
penjadwal.dag_dir_list_interval
Jumlah detik folder DAGs harus dipindai untuk file baru.
Default: 300 detik
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik untuk mengurai folder DAG. Sebaiknya tingkatkan nilai ini jika Anda mengalami waktu penguraian yang lamatotal_parse_time metrics, yang mungkin disebabkan oleh sejumlah besar file di folder DAG Anda.
|
|
penjadwal.min_file_process_interval
Jumlah detik setelah penjadwal mengurai DAG dan pembaruan untuk DAG tercermin.
Default: 30 detik
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik yang ditunggu oleh penjadwal sebelum mengurai 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 penjadwal Apache Airflow, masing-masing file DAG diurai untuk mengekstrak objek DAG Python. Di Apache Airflow v2 dan yang lebih baru, penjadwal mengurai maksimum jumlah proses pengur aian pada saat yang bersamaan. Jumlah detik yang ditentukan dalam scheduler.min_file_process_interval (v2) atau dag_processor.min_file_process_interval (v3) harus berlalu sebelum file yang sama diurai lagi.
Parameter
Bagian ini menjelaskan opsi konfigurasi yang tersedia untuk file Apache Airflow DAG (Apache Airflow v2 dan yang lebih baru) dan kasus penggunaannya.
- Apache Airflow v3
-
| Konfigurasi |
Kasus penggunaan |
|
dag_processor.dag_file_processor_timeout
Jumlah detik sebelum DagFileProcessor waktu habis memproses file DAG.
Default: 50 detik
|
Gunakan opsi ini untuk menambah waktu yang dibutuhkan sebelum DagFileProcessor waktu habis. Sebaiknya tingkatkan nilai ini jika Anda mengalami batas waktu dalam log pemrosesan DAG yang mengakibatkan tidak ada DAG yang layak dimuat.
|
|
core.dagbag_import_timeout
Jumlah detik sebelum mengimpor file Python habis waktu.
Default: 30 detik
|
Gunakan opsi ini untuk menambah waktu yang dibutuhkan sebelum waktu penjadwal habis saat mengimpor file Python untuk mengekstrak objek DAG. Opsi ini diproses sebagai bagian dari “loop” penjadwal, dan harus berisi nilai kurang dari nilai yang ditentukan dalamdag_processor.dag_file_processor_timeout.
|
|
core.min_serialized_dag_update_interval
Jumlah detik minimum setelah DAG serial dalam database diperbarui.
Standar: 30
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik setelah DAG serial dalam database diperbarui. Sebaiknya tingkatkan nilai ini jika Anda memiliki sejumlah besar DAG, atau DAG kompleks. Meningkatkan nilai ini mengurangi beban pada penjadwal dan database saat DAG diserialkan.
|
|
core.min_serialized_dag_fetch_interval
Jumlah detik DAG yang diserialkan diambil ulang dari database saat sudah dimuat di. DagBag
Default: 10
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik DAG serial diambil ulang. Nilai harus lebih besar 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 saat DAG diserialkan.
|
- Apache Airflow v2
-
| Konfigurasi |
Kasus penggunaan |
|
core.dag_file_processor_timeout
Jumlah detik sebelum DagFileProcessor waktu habis memproses file DAG.
Default: 50 detik
|
Gunakan opsi ini untuk menambah waktu yang dibutuhkan sebelum DagFileProcessor waktu habis. Sebaiknya tingkatkan nilai ini jika Anda mengalami batas waktu dalam log pemrosesan DAG yang mengakibatkan tidak ada DAG yang layak dimuat.
|
|
core.dagbag_import_timeout
Jumlah detik sebelum mengimpor file Python habis waktu.
Default: 30 detik
|
Gunakan opsi ini untuk menambah waktu yang dibutuhkan sebelum waktu penjadwal habis saat mengimpor file Python untuk mengekstrak objek DAG. Opsi ini diproses sebagai bagian dari “loop” penjadwal, dan harus berisi nilai kurang dari nilai yang ditentukan dalamcore.dag_file_processor_timeout.
|
|
core.min_serialized_dag_update_interval
Jumlah detik minimum setelah DAG serial dalam database diperbarui.
Standar: 30
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik setelah DAG serial dalam database diperbarui. Sebaiknya tingkatkan nilai ini jika Anda memiliki sejumlah besar DAG, atau DAG kompleks. Meningkatkan nilai ini mengurangi beban pada penjadwal dan database saat DAG diserialkan.
|
|
core.min_serialized_dag_fetch_interval
Jumlah detik DAG yang diserialkan diambil ulang dari database saat sudah dimuat di. DagBag
Default: 10
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah detik DAG serial diambil ulang. Nilai harus lebih besar 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 saat DAG diserialkan.
|
Tugas
Penjadwal dan pekerja Apache Airflow keduanya terlibat dalam tugas antrian dan de-antrean. Penjadwal mengambil tugas yang diurai siap dijadwalkan dari status Tidak Ada ke status Ter jadwal. Eksekutor, yang juga berjalan pada wadah penjadwal di Fargate, mengantri tugas-tugas tersebut 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 diganti Amazon MWAA ditandai. red
- Apache Airflow v3
-
| Konfigurasi |
Kasus penggunaan |
|
core.paralelisme
Jumlah maksimum instance tugas yang dapat dipantau dan dijalankan oleh setiap penjadwal secara bersamaan.
Default: Secara dinamis diatur berdasarkan(maxWorkers * maxCeleryWorkers) / schedulers * 1.5.
|
Gunakan opsi ini untuk mengontrol plafon global keras pada total tugas yang sedang berjalan. Misalnya, Anda dapat meningkatkan nilai ini untuk melindungi metadatabase Anda dari terlalu banyak koneksi bersamaan atau untuk membatasi biaya. Nilai defaultnya tinggi sehingga kontrol lain (worker_autoscale, slot kumpulan,max_active_tasks_per_dag) berfungsi sebagai batas konkurensi efektif.
|
|
core.max_active_tasks_per_hari
Jumlah maksimum instance tugas yang diizinkan untuk dijalankan secara bersamaan di setiap proses DAG.
Standar: 16
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah instance tugas yang diizinkan untuk dijalankan secara bersamaan. Misalnya, jika Anda memiliki 100 DAG dengan 10 tugas paralel dan ingin semua DAG berjalan secara bersamaan, hitung paralelisme maksimum. Kalikan jumlah pekerja yang tersedia dengan kepadatan tugas dicelery.worker_concurrency, lalu bagi dengan jumlah DAG.
|
|
core.execute_tasks_new_python_interpreter
Menentukan apakah Apache Airflow mengeksekusi tugas dengan membagi proses induk, atau dengan membuat proses Python baru.
Default: True
|
Ketika disetel keTrue, Apache Airflow mengenali perubahan yang Anda buat pada plugin Anda sebagai proses Python baru yang dibuat untuk menjalankan tugas.
|
|
selery.worker_concurrency
Amazon MWAA mengganti instalasi dasar Airflow untuk opsi ini untuk menskalakan pekerja sebagai bagian dari komponen penskalaan otomatis.
Default: Tidak berlaku
|
Any value specified for this option is ignored.
|
|
celery.worker_autoscale
Konkurensi tugas untuk pekerja.
Default:
mw1.micro - 3.0 mw1.kecil - 5,0 mw1.medium - 10,0 mw1.large - 20,0 mw1.xlarge - 40,0 mw1,2xbesar - 80,0
|
Gunakan opsi ini untuk membebaskan sumber daya dengan mengurangimaximum, minimum konkurensi 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 cukup, tugas segera gagal. Sebaiknya ubah nilai ini untuk tugas padat sumber daya dengan mengurangi nilai menjadi kurang dari default untuk memungkinkan lebih banyak kapasitas per tugas.
|
- Apache Airflow v2
-
| Konfigurasi |
Kasus penggunaan |
|
core.paralelisme
Jumlah maksimum instance tugas yang dapat dipantau dan dijalankan oleh setiap penjadwal secara bersamaan.
Default: Secara dinamis diatur berdasarkan(maxWorkers * maxCeleryWorkers) / schedulers * 1.5.
|
Gunakan opsi ini untuk mengontrol plafon global keras pada total tugas yang sedang berjalan. Misalnya, Anda dapat meningkatkan nilai ini untuk melindungi metadatabase Anda dari terlalu banyak koneksi bersamaan atau untuk membatasi biaya. Nilai defaultnya tinggi sehingga kontrol lain (worker_autoscale, slot kumpulan,max_active_tasks_per_dag) berfungsi sebagai batas konkurensi efektif.
|
|
core.dag_konkurensi
Jumlah instance tugas yang diizinkan untuk dijalankan secara bersamaan untuk setiap DAG.
Standar: 16
Konfigurasi ini telah usang sejak Airflow 2.2.0 dan digantikan oleh. core.max_active_tasks_per_dag
|
Gunakan opsi ini untuk membebaskan sumber daya dengan meningkatkan jumlah instance tugas yang diizinkan untuk dijalankan secara bersamaan. Misalnya, jika Anda memiliki 100 DAG dengan 10 tugas paralel dan ingin semua DAG berjalan secara bersamaan, hitung paralelisme maksimum. Kalikan jumlah pekerja yang tersedia dengan kepadatan tugas dicelery.worker_concurrency, lalu bagi dengan jumlah DAG.
|
|
core.execute_tasks_new_python_interpreter
Menentukan apakah Apache Airflow mengeksekusi tugas dengan membagi proses induk, atau dengan membuat proses Python baru.
Default: True
|
Ketika disetel keTrue, Apache Airflow mengenali perubahan yang Anda buat pada plugin Anda sebagai proses Python baru yang dibuat untuk menjalankan tugas.
|
|
selery.worker_concurrency
Amazon MWAA mengganti instalasi dasar Airflow untuk opsi ini untuk menskalakan pekerja sebagai bagian dari komponen penskalaan otomatis.
Default: Tidak berlaku
|
Any value specified for this option is ignored.
|
|
celery.worker_autoscale
Konkurensi tugas untuk pekerja.
Default:
mw1.micro - 3.0 mw1.kecil - 5,0 mw1.medium - 10,0 mw1.large - 20,0 mw1.xlarge - 40,0 mw1,2xbesar - 80,0
|
Gunakan opsi ini untuk membebaskan sumber daya dengan mengurangimaximum, minimum konkurensi 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 cukup, tugas segera gagal. Sebaiknya ubah nilai ini untuk tugas padat sumber daya dengan mengurangi nilai menjadi kurang dari default untuk memungkinkan lebih banyak kapasitas per tugas.
|